1 Introduction

##Gendl®

Pre-built Distributions available here:

http://gendl.com

Gendl® is a Generative Programming and Knowledge Based Engineering
framework, implementing concepts which date back to the 1980s and
which cutting-edge companies have been quietly using to gain
competitive advantage with mission-critical engineering
applications. These concepts required hundreds of thousands of dollars
investment in hardware and software just a couple decades ago. They
are now at your fingertips as an integral part of the Open-Source
ecosystem, running on commodity consumer-grade hardware.

Gendl allows for high-level declarative, object-oriented problem
solving and application development, including but not limited to the
ability to generate and manipulate 3D geometry. To solve a problem in
Gendl, you formulate it using the define-object operator, which
allows you to specify inputs, outputs (computed-slots), and child
objects, which then gives the ability to generate a "tree" of objects,
useful for decomposing complexity.

A graphical web-based interface, tasty, is available for interacting
with your system as it is developed.

The web-based GUI framework used to make tasty (GWL) is also available
for creating your own custom web-based user interfaces.

Fundamental KBE Features Provided

Declarative (non-procedural) Syntax

Object and value caching (i.e. runtime memorization)

Dependency-tracking (cached values get recomputed when needed)

Gendl ships with a full set of wireframe 3D and 2D geometry primitives
along with output lenses for standard browser-based viewing and
exchange formats such as PDF, SVG, X3D, PNG, as well as DXF.

Optionally there is available a set of surface- and solid-modeling
primitives which currently depend on SMLib, a commercial geometry
kernel available from Solid Modeling Solutions, Inc. SMLib enables the
use of standard CAD data exchange formats such as Iges, STEP, and STL
(for 3D printing).

Basic Requirements:

Common Lisp: Allegro CL 9.0, LispWorks 6.x, SBCL, or CCL (Clozure
CL). Without web interface, initial ports to ECL, ABCL, and CLISP
have also been completed.

Emacs Editor/IDE Support

`Glime' is our Gendl-specific customizations to Slime. This is
implemented entirely on the swank (Common Lisp) side of things, and
can be loaded with

(load (compile-file ".../gendl/emacs/glime.lisp"))

Although not strictly necessary, the file .../gendl/emacs/gdl.el is
also provided and can be used as a starting point or reference for
loading Glime and Gendl into an emacs environment.

Further Documentation

Documentation is published
here, and this very much
an active work in progress. Training tutorials and videos are also in
progress and in their current state are available in the Documentation
section on http://gen.works.

Training/Coaching

Genworks would like to begin hosting free Gendl/GDL training
seminars in Metro Detroit and possibly other locations. Please
contact Genworks if you are interested in
being notified of any upcoming seminars.

Gendl source code Architecture:

Gendl is separated into layered components, some of which depend on
others. Some components also depend on third-party external libraries,
which are currently handled with the Quicklisp system.

At the core "kernel" is the :gendl (nickname :gdl) package,
implemented with files in the folder gendl/base/. This includes the
compiler/expanders for define-object and related macros as well as
core primitives such as vanilla-mixin.

Including the base, there are eight modules supported with Gendl:

:base - (gendl/base/) Gendl language kernel for compiling
declarative object definitions and working with them at runtime.

:cl-lite - (gendl/cl-lite/) For compiling and loading directory
trees as projects. This can also generate ASDF files, and
supplements the standard use of asdf and quicklisp.

Alternative Geometry Kernels

If you have a different favorite solid modeling kernel
(e.g. OpenCascade, Parasolid, Geometros sgCore), then an interesting
project would be to interface the existing Surface package to that
kernel, by implementing the methods in surf/source/methods.lisp.

The Surface (:surf) package (in the surf/ folder) contains all the
high-level Surface and Solid modeling primitives currently implemented
in Gendl. These primitives provide a protocol for what the objects
should be able to do (i.e. what messages they should answer), but
without the SMLib library and associated middleware available, they
will not be able to return any results. The SMLib kernel and
associated middleware are available as part of the commercial
Genworks® GDL product from Genworks®
International.