From d20bf273b84caf99ad41d8f1dcbd2976c535f72f Mon Sep 17 00:00:00 2001 From: antrik Date: Mon, 9 Mar 2009 01:52:27 +0100 Subject: Language bindings GSoC task: Lisp implemented last year --- .../gsoc/project_ideas/language_bindings.mdwn | 45 ++-------------------- 1 file changed, 3 insertions(+), 42 deletions(-) (limited to 'community/gsoc/project_ideas/language_bindings.mdwn') diff --git a/community/gsoc/project_ideas/language_bindings.mdwn b/community/gsoc/project_ideas/language_bindings.mdwn index a96f4569..3376754c 100644 --- a/community/gsoc/project_ideas/language_bindings.mdwn +++ b/community/gsoc/project_ideas/language_bindings.mdwn @@ -36,7 +36,9 @@ the features available in the respective language. These more specialised bindings could hook in at some of the lower level library interfaces ([[hurd/libports]], [[hurd/glibc]], etc.); use the [[microkernel/mach/MIG]]-provided [[microkernel/mach/RPC]] stubs directly; or -even create native stubs directly from the interface definitions. +even create native stubs directly from the interface definitions. The +[[lisp_bindings_created_by_Flavio_Cruz|flaviocruz]] in last year's GSoC mostly +use the latter approach, and can serve as a good example. The task is to create easy to use Hurd bindings for a language of the student's choice, and some example servers to prove that it works well in practice. This @@ -47,44 +49,3 @@ There has already been some [earlier work on Python bindings](http://www.sigill.org/files/pytrivfs-20060724-ro-test1.tar.bz2), that perhaps can be re-used. Also some work on [Perl bindings](http://www.nongnu.org/hurdextras/#pith) is availabled. - -# Lisp - -Most Lisp implementations provide a Foreign Function Interface (FFI) that -enables the Lisp code to call functions written in another language. -Specifically, most implementations provide an FFI to the C ABI (hence giving -access to C, Fortran and possibly C++). - -Common Lisp has even a portability layer for such FFI, -[CFFI](http://common-lisp.net/project/cffi/), so that you can write bindings -purely in Lisp and use the same binding code on any implementation supported by -CFFI. - -Many Scheme implementation also provide an FFI. [Scheme48](http://www.s48.org/) -is even the implementation used to run scsh, a Scheme shell designed to provide -instant access to POSIX functions. -[Guile](http://www.gnu.org/software/guile/guile.html) is the GNU project's -Scheme implementation, meant to be embeddable and provide access to C. At least -[Gambit](http://dynamo.iro.umontreal.ca/~gambit/), -[Chicken](http://www.call-with-current-continuation.org/), -[Bigloo](http://www-sop.inria.fr/mimosa/fp/Bigloo/) and -[PLT](http://www.plt-scheme.org/) are known to provide an FFI too. - -With respect to the packaging and dependencies, the good news is that Debian -comes handy: 5 Common Lisp implementations are packaged, one of which has -already been ported to Hurd (ECL), and CFFI is also packaged. As far as Scheme -is concerned, 14 [R5RS](http://www.schemers.org/Documents/Standards/R5RS/) -implementations are provided and 1 [R6RS](http://www.r6rs.org/). - -Possible mentors: Pierre THIERRY (nowhere_man) for Common Lisp or Scheme, and perhaps Python - -Exercise: Write some simple program(s) using Hurd-specific interfaces in the -language you intend to work on. For a start, you could try printing the system -uptime. A more advanced task is writing a simple variant of the hello -translator (you can use the existing C imlementation as reference), -implementing only open() and read() calls. Don't only write an implementations -using the existing C libraries (libps, libtrivfs), but also try to work with -the MiG-generated stubs directly. If you are ambitious, you could even try to -write your own stubs... - -*Status*: Flavio Cruz has completed [[Lisp_bindings|flaviocruz]] for GSoC 2008! -- cgit v1.2.3