Skip to content
Generative Programming and KBE system embedded in Common Lisp --- #gendl on
JavaScript Common Lisp Emacs Lisp CSS HTML XSLT
Branch: devo
Clone or download

Latest commit

Latest commit 94b8f98 May 9, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
apps pruned codebase. May 9, 2020
base pruned codebase. May 9, 2020
cl-lite Regenerated .asd files, Cleaned up definition warnings. Oct 23, 2018
demos pruned codebase. May 9, 2020
documentation updated bench process, built tutorial Oct 6, 2019
emacs added some line-arc constraints. Mar 4, 2020
geom-base Reverted paserve name to aserve Mar 28, 2020
glisp going mobile Jan 22, 2020
gwl-graphics pruned codebase. May 9, 2020
gwl pruned codebase. May 9, 2020
licenses/open-source added %reversed?% input to curve, added *bias-to-double-float?* globa… Jan 18, 2016
patches merged remaining patches from 1588 and 1590 Nov 10, 2016
regression purged old x3dom Oct 23, 2019
release-notes updating g101 training slides Jul 25, 2014
setup-cffi Regenerated .asd files, Cleaned up definition warnings. Oct 23, 2018
surf updated quicklisp Nov 22, 2019 added x permissions on Jan 3, 2020
.gitignore added linux ccl bins to ignore list. Oct 23, 2019
.gitlab-ci.yml try rsync for all agents. Apr 10, 2020
COPYING.txt trying to commit from build directory Nov 14, 2011 fixed md typo. Apr 22, 2020
defsystem-depends-on.isc updated gorg templates. Jan 22, 2019
depends-on.isc removed geysr dep for now Dec 28, 2018
gendl-asdf.asd updated crawler, simplified gendl-asdf system. Nov 6, 2019
gendl-asdf.lisp updated crawler, simplified gendl-asdf system. Nov 6, 2019
gendl.asd removed gendl-asdf dep for now Dec 28, 2018
ignore-list.isc Regenerated .asd files, Cleaned up definition warnings. Oct 23, 2018
load-gendl.lisp preparing for release 1583 Jun 4, 2013


Pre-built Distributions available here:

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:

  1. 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.

  2. Quicklisp (available from

  3. Gnu Emacs (recommended Editor/IDE -- native CL Editor/IDEs can also be used)

  4. Standard Web Browser (Chrome, Firefox, Safari, IE, Opera). Pick one with WebGL support if possible (check here and here to check for WebGL browser support)

  5. Curiosity, Creativity, and Courage


To load the entire system, you can do it with:

  (ql:quickload :gendl)

Now you can do a quick sanity check by visiting:


in your browser and trying to instantiate the default assembly tree (robot).

Emacs Editor/IDE Support

Slime (Superior Lisp Interaction Mode for Emacs) is recommended for developing Gendl applications with Emacs.

Slime is available with:

(ql:quickload :quicklisp-slime-helper)

`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


  • #gendl on (irc://
  • @gendl and @genworks on Twitter
  • ( mailing list hopefully/possibly coming soon)
  • Genworks Google Group
  • #lisp, #quicklisp, #emacs channels on


  • 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.

  • :geom-base - (gendl/geom-base/) Built-in Gendl 3D and 2D wireframe primitives and cartesian coordinate system for basic geometry generation and manipulation.

  • :gwl - (gendl/gwl/) Generative Web Language, for representing web pages using GDL objects, includes Ajax-based web interaction with your model.

  • :gwl-graphics - (gendl/gwl-graphics/) for including graphics rendered from geometry object in GWL web pages.

  • :surf - (gendl/surf/) NURBS surface and brep/boolean solids primitives (these don't do much without the underlying geometry kernel middleware or implementation).

  • :tasty - (gendl/apps/tasty/) web-based testing, tracking, and debugging utility.

  • :yadd - (gendl/apps/yadd/) for self auto-documentation.

  • :regression - (gdl/regression) regression test utilities and tests.

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.


Affero Gnu General Public License.

The AGPL, has the requirement that you release any derivatives and any applications compiled with Gendl under AGPL-compatible license (if distributed at all).

Proprietary Distribution

For Proprietary (closed-source) development and distribution, the commercial Genworks® GDL system (including Gendl® technology and, optionally, commercial CL engines, technical support, and commercial solid modeling engine) is available from Genworks.

Bug Bounty Program, Bug Fix Program

Genworks offers a modest bounty for reporting (and sometimes solving) of bugs on the Issues List.

Please contact Genworks for details.

You can’t perform that action at this time.