Pascal Costanza | 6 Nov 14:33 2013

Closer projects moved to sourceforge


I have moved the hosting of the Closer projects (MOP Feature Tests, Closer to MOP, ContextL, Filtered
Functions, AspectL, LW Compat) to sourceforge. I also switched from darcs hosting to git hosting.

You can find the software now at

All libraries have received new version numbers based on semantic versioning.

The mailing lists will from now on also be hosted at sourceforge. Please unsubscribe from the current
mailing lists, and subscribe to the mailing lists at instead.

The information on the Closer webpage at has also been updated accordingly.

Please let me know if you have any questions or problems.


Pascal Costanza
The views expressed in this email are my own, and not those of my employer.

Pascal Costanza | 20 Jan 14:37 2010

Closer to MOP and ContextL: Support for LispWorks 6.0.


I have just released Closer to MOP 0.61 and ContextL 0.61, which both add support for LispWorks 6.0. The
other Closer libraries will work in LispWorks 6.0 as well, provided you use 0.61 of Closer to MOP as a basis.



Pascal Costanza, mailto:pc@...,
Vrije Universiteit Brussel
Software Languages Lab
Pleinlaan 2, B-1050 Brussel, Belgium
Pascal Costanza | 14 Dec 14:35 2009

[CfP] ELS 2010

                     3rd European Lisp Symposium

May 6-7, 2010, Fundacao Calouste Gulbenkian, Lisbon, Portugal

Important Dates 
  + Submission Deadline: *January 29, 2010*
  + Author Notification: March 1, 2010
  + Final Paper Due: March 26, 2010
  + Symposium: *May 6-7, 2010*

  We hope, as in previous years, to invite authors of accepted
  research contributions to submit an extended version of their papers
  to a special issue of the Journal of Universal Computer Science

  The purpose of the European Lisp Symposium is to provide a forum
  for the discussion and dissemination of all aspects of design,
  implementation and application of any of the Lisp dialects.  We
  encourage everyone interested in Lisp to participate.

  The European Lisp Symposium 2010 invites high quality papers about
  novel research results, insights and lessons learned from practical
  applications, and educational perspectives, all involving Lisp
  dialects, including Common Lisp, Scheme, Emacs Lisp, AutoLisp,
  ISLISP, Dylan, Clojure, and so on.
(Continue reading)

Pascal Costanza | 4 Dec 23:08 2009

New project: filtered functions


I am very excited that I can finally annouce a public release of 'filtered functions', an extension of
generic functions that Charlotte Herzeel, Jorge Vallejos, and myself have developed some time ago and
that we are very excited about because it seems to be quite powerful in a number of very different
scenarios. It took a while to release filtered functions, because it is a quite non-trivial extension of
generic functions and requires a CLOS MOP implementation that is compliant with the AMOP specification
to quite a deep level. Therefore, this required some serious preparation in the form of a much improved
Closer to MOP library, that I released today as well.

You can find filtered functions at the Closer project website at - below you will find a general overview of the concept.

Filtered functions are an extension of generic functions, extended with a filtering step where the
arguments received by a generic function are mapped to other values based on user-defined mapping
functions. Those filtered values are then used to perform the actual selection and execution of
applicable methods. Nevertheless, the methods that are eventually executed see the original objects as
received by the generic function, and not the filtered ones.

Here are some examples to illustrate the expressive power of filtered functions.


In order to be able to use filtered functions, we need to have filter functions that map received arguments
to values that we actually want to base our dispatch on. For the factorial function, we want to distinguish
between negative and positive numbers, and the number zero. For that we can just use the Common Lisp
function SIGNUM that returns +1 for positive numbers, -1 for negative numbers, and just 0 for the number 0.
The filtered function FAC can thus be defined as follows.

(Continue reading)

Pascal Costanza | 4 Dec 22:12 2009

New release of Closer to MOP (v0.6)


I have just released a new version of Closer to MOP. This is a major new release, with a couple of substantial improvements:

+ Support for Embeddable Common Lisp has been completely reworked, and ECL is now officially supported in
Closer to MOP (from ECL 9.12.2 on).

+ Macintosh Common Lisp has been reactivated as an open source project, and the support for MCL in Closer to
MOP has been resurrected.

+ Scieneer Common Lisp is now supported to some degree as well.

+ In total, Closer to MOP now supports 9 different Common Lisp implementations: Allegro Common Lisp,
CLisp, Clozure Common Lisp, CMU Common Lisp, Embeddable Common Lisp, LispWorks, Macintosh Common Lisp,
Steel Bank Common Lisp, and Scieneer Common Lisp.

+ I have added support for the complete generic function invocation protocol. This includes
top of that, Closer to MOP adds a missing piece in the protocol, namely
COMPUTE-EFFECTIVE-METHOD-FUNCTION, for turning an effective method form into an actual function.
Note, however, that support for the generic invocation is not available in all supported Common Lisp
implementations: CMU Common Lisp, Macintosh Common Lisp and Scieneer Common Lisp unfortunately don't
provide the necessary extensibility to support the protocols at all, and ECL has the slight restriction
that method lambda forms have the same lambda list as the generic fun
 ction for which they are defined, and not the format as specified in AMOP.

+ In previous Closer to MOP versions, the standard metobject definition macros and functions (DEFCLASS,
replacement 'standard' metaobject classes of Closer to MOP (STANDARD-CLASS,
(Continue reading)

Pascal Costanza | 4 Dec 22:19 2009

New version of ContextL (v0.6)


I have just released a new version of ContextL. Here are the new features:

+ ContextL now supports delimited first-class dynamic environments and DYNAMIC-WIND. Due to popular
demand, these feature can be used independently of the rest of ContextL, by way of using a separate system
definition. (In that case, no features of CLOS MOP are used, so this should run in any ANSI-compliant
Common Lisp implementation.)

+ Added support for Embeddable Common Lisp and resurrected support for Macintosh Common Lisp.
Unfortunately, the CLOS MOP of Scieneer Common Lisp is too weak, so I cannot support ContextL there (yet).

+ Dependencies on portable-threads and trivial-garbage are removed - these libraries are no longer
necessary for ContextL to work.

+ Improved use of synchronization features in multi-threaded Common Lisp implementations.

+ Lots of special thanks to the following people who provided useful patches and comments: Willem
Broekema, Theam Yong Chew, Alexander Gravilov, Attila Lendvai, and Tobias Rittweiler. Extra special
thanks to Duane Rettig (of Franz Inc.) and Martin Simmons (of LispWorks Ld.) for helping with
Allegro-specific and LispWorks-specific issues.



Pascal Costanza, mailto:pc@...,
Vrije Universiteit Brussel
Software Languages Lab
Pleinlaan 2, B-1050 Brussel, Belgium
(Continue reading)

Pascal Costanza | 29 Nov 21:00 2008

New versions of Closer libraries


I have just released new versions of all Closer libraries, including  
Closer to MOP and ContextL.

This is an intermediate version, there are no major changes in these  
releases, apart from some minor added features and some bug fixes. I  
am currently working on supporting first-class dynamic environments in  
ContextL, and I mainly provide this current snapshot as a possible  
fallback solution in case something goes wrong. Incorporating such  
first-class dynamic environments is not a trivial operation, that's  
why I try to be extra careful here.

Nevertheless, here are some highlights of the new versions:

## Closer to MOP 0.55 ##

+ Fixed a bug in the recognition of documentation strings in make- 
method-lambda for LispWorks.

+ Added standard-instance-access and funcallable-standard-instance- 
access to LispWorks, due to popular request.

+ Added a utility function subclassp that is sometimes more robust  
than subtypep (but subtypep should be preferred whenever possible).

## ContextL 0.51 ##

+ Ensure-layered-method now accepts function designators instead of  
just function names, due to Drew Crampsie.
(Continue reading)

Pascal Costanza | 1 Jun 23:17 2008

New versions of Closer libraries


I have just released new versions of all Closer libraries, including  
Closer to MOP and ContextL.

A major change that affects all libraries is that I have dropped  
support for Macintosh Common Lisp, and "replaced" OpenMCL with Clozure  
Common Lisp. Furthermore, the dependency of Closer to MOP to LW-Compat  
has been removed due to requests by users, but a dependency of  
ContextL to the portable-threads librarie of the GBBopen project has  
been added.

Other highlights include:

## Closer to MOP 0.5 ##

+ In MCL, OpenMCL and Clozure Common Lisp, funcallable-standard-object  
is now exported from Closer to MOP.

+ Fixed the lack of :generic-function-argument-precedence-order- 
returns-required-arguments in Allegro Common Lisp.

+ Ensured that a defgeneric form makes a generic function metaobject  
available in the compile-time environment. Otherwise, defmethod may  
not yield a method of the correct method metaobject class.

+ Added support for compute-discriminating-function in Clozure Common  
Lisp and OpenMCL, based on code provided by Slava Akhmechet.

+ Added a classp predicate (due to Willem Broekema).
(Continue reading)

Pascal Costanza | 8 Mar 16:22 2008

Article about COP in JOT

Hi everybody,

There is a new article about Context-oriented Programming in the  
Journal of Object Technology, and it can be viewed and downloaded at

It discusses context-oriented extensions for Common Lisp, Smalltalk  
and Java, namely ContextL, ContextS and ContextJ. There is a new  
ContextL example presented in this article that we haven't discussed  
in any of the previous papers, so it should be an interesting read for  
ContextL users as well.

As always, please feel free to send feedback and suggestions.



1st European Lisp Symposium (ELS'08)

Pascal Costanza, mailto:pc@...,
Vrije Universiteit Brussel, Programming Technology Lab
Pleinlaan 2, B-1050 Brussel, Belgium
Pascal Costanza | 3 Sep 14:49 2007

ContextL Survey September 2007

Context-dependent behavior is becoming increasingly important for a  
wide range of application domains. Unfortunately, mainstream  
programming languages do not provide mechanisms that enable software  
entities to adapt their behavior dynamically to the current execution  
context. In collaboration with various researchers, we have developed  
a new programming technique called "Context-oriented Programming" (COP).

ContextL - - is  
our first fully implemented and currently most mature programming  
language extension for COP and is built on top of the Common Lisp  
Object System (CLOS). ContextL has first been made available to the  
public in early 2005, and has already been adopted by a number of  
programmers. We would now like to assess how well ContextL has been  
received so far.

Please consider participating in our first survey about ContextL -  
this will help us a lot to develop ContextL and related projects  
further (like Closer to MOP, etc.).

You can find the survey and more information about it at http://

Thanks a lot,


Pascal Costanza, mailto:pc@...,
Vrije Universiteit Brussel, Programming Technology Lab
Pleinlaan 2, B-1050 Brussel, Belgium
(Continue reading)

Pascal Costanza | 24 Apr 19:32 2007

Reflective Layer Activation in ContextL


I have just uploaded the paper "Reflective Layer Activation in  
ContextL" to my website that we have presented at this year's ACM  
Symposium on Applied Computing. You can download it from http://p-

This paper describes some aspects of the metaobject protocol of  
ContextL. This is not exactly the same version as presented at the  
symposium, but the paper has been updated to reflect the new API in  
ContextL 0.4. However, apart from the resulting changes of function  
names and a few other minor edits, the contents have remained the same.



Pascal Costanza, mailto:pc@...,
Vrije Universiteit Brussel, Programming Technology Lab
Pleinlaan 2, B-1050 Brussel, Belgium