From b8c65659626fbea8ce8d249c1a4d7c26060155f2 Mon Sep 17 00:00:00 2001 From: GNU Hurd wiki engine Date: Sat, 8 Mar 2008 23:28:30 +0000 Subject: web commit by antrik: Added description for language bindings task -- all tasks have at least skeleton descriptions now --- community/gsoc/project_ideas.mdwn | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'community/gsoc/project_ideas.mdwn') diff --git a/community/gsoc/project_ideas.mdwn b/community/gsoc/project_ideas.mdwn index afe0906b..aead742d 100644 --- a/community/gsoc/project_ideas.mdwn +++ b/community/gsoc/project_ideas.mdwn @@ -685,3 +685,34 @@ mechanisms are necessary to handle stuff like dependencies on other packages. The goal of this task is to create these mechanisms. * Lisp, Python, ... bindings + +The main idea of the Hurd design is giving users the ability to easily +modify/extend the system's functionality. This is done by creating filesystem +translators, or sometimes other kinds of Hurd servers. + +However, in practice this is not as easy as it should, because creating +translators and other servers is quite involved -- the interfaces for doing +that are not exactly simple, and available only for C programs. Being able to +easily create simple translators in RAD languages is highly desirable, to +really be able to reap the advantages of the Hurd architecture. + +Originally Lisp was meant to be the second system language besides C in the GNU +system; but that doesn't mean we are bound to Lisp. Bindings for any popular +high-level language, that helps quickly creating simple programs, are highly +welcome. + +Several approaches are possible when creating such bindings. One way is simply +to provide wrappers to all the available C libraries (libtrivfs, libnetfs +etc.). While this is easy (it requires relatively little consideration), it may +not be the optimal solution. It is preferable to hook in at a lower level, thus +being able te create interfaces that are specially adapted to make good use of +the features available in the respective language. + +These more specialised bindings could hook in at some of the lower level +library interfaces (libports, glibc, etc.); use the mig-provided RPC stubs +directly; or even create native stubs directly from the interface definitions. + +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 proctice. This +project will require gaining a very good understanding of the various Hurd +interfaces. Skills in designing nice programming interfaces are a must. -- cgit v1.2.3