summaryrefslogtreecommitdiff
path: root/community/gsoc/project_ideas/language_bindings.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'community/gsoc/project_ideas/language_bindings.mdwn')
-rw-r--r--community/gsoc/project_ideas/language_bindings.mdwn75
1 files changed, 0 insertions, 75 deletions
diff --git a/community/gsoc/project_ideas/language_bindings.mdwn b/community/gsoc/project_ideas/language_bindings.mdwn
deleted file mode 100644
index d9a426be..00000000
--- a/community/gsoc/project_ideas/language_bindings.mdwn
+++ /dev/null
@@ -1,75 +0,0 @@
-[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012 Free Software
-Foundation, Inc."]]
-
-[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled [[GNU Free Documentation
-License|/fdl]]."]]"""]]
-
-[[!meta title="Bindings to Other Programming Languages"]]
-
-<!-- See also open_issues/gccgo, open_issues/gnat, open_issues/perl, and
-open_issues/python. -->
-
-The main idea of the Hurd design is giving users the ability to easily
-modify/extend the system's functionality ([[extensible_system|extensibility]]).
-This is done by creating [[filesystem_translators|hurd/translator]] and 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 ([[hurd/libtrivfs]], [[hurd/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 to create interfaces that are specially adapted to make good use of
-the features available in the respective language.
-
-These more specialized 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. The
-[[lisp_bindings_created_by_Flavio_Cruz|flaviocruz]] as his [[2008 GSoC
-project|2008]] mostly use the latter approach, and can serve as a good example.
-In his [[2011 GSoC project|2011]], Jérémie Koenig designed and began
-implementing an object-oriented interface; see his [[Java status
-page|user/jkoenig/java]] for details.
-
-There is another possible reason for preferring lower-level bindings:
-Presently, the Hurd server libraries use the cthreads threading library, which
-predates the pthread standard prevalent today. There is a
-[[pthread library for the Hurd|libpthread]]
-as well, but it's not possible to use both cthreads and pthreads in
-the same executable. Thus, until
-[[porting_the_Hurd_libraries_to_pthreads|community/gsoc/project_ideas/pthreads]]
-is finished, implementing bindings for any language that uses pthreads (in the
-runtime environment or the actual programs) is only possible when not using the
-standard Hurd server libraries at all -- i.e. when binding at MIG stub level or
-interface definition level.
-
-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
-project will require gaining a very good understanding of the various Hurd
-interfaces. Skills in designing nice programming interfaces are a must.
-
-Anatoly A. Kazantsev has started working on [Python
-bindings](http://savannah.nongnu.org/projects/pyhurd/) last year -- if Python
-is your language of choice, you probably should take his work and complete it.
-
-There was also some previous work on [Perl
-bindings](http://www.nongnu.org/hurdextras/#pith), which might serve as a
-reference if you want to work on Perl.
-
-Possible mentors: Anatoly A. Kazantsev (anatoly) for Python