I'm pleased to announce the first release of my Church-State system. Church-State is an experimental programming language based partly on fonc projects (OMeta and jolt-burg). Church is a dynamically typed language along the lines of lisp / smalltalk / python / ruby.
It features: - an indented syntax like python / haskell that uses spacing to determine structure - an object system with classes and dynamic dispatch - lisp-style macros (church macros are not completely implemented yet) - a native code compiler that creates ELF object files This release marks the first point where the Church compiler can compile itself (making it a meta-circular system). From the outset I was keen to see what it would take to make a language that could compile itself using a minimum amount of source code and with a minimal reliance on third party libraries. As released this system is about 10 000 lines of code, relies on "ld" (the UNIX linker), a third party hash-table implementation and the Boehm garbage collector. These are the release notes from the announcement on my blog: http://subvert-the-dominant-paradigm.net/blog/?p=40 ------------------------------------------------------------- *Church release* I’m proud to have reached the stage where my Church-State system can compile itself (ie the compiler is bootstrapped). I have made the first alpha release available at: http://subvert-the-dominant-paradigm.net/~jewel/church/church-alpha-0.tar.gz To try it out you’ll need a 32-bit x86 linux system with “ld” installed. (Usually ld will be installed if you’ve installed something like gcc). There are two simple test files mentioned in the README and there are also instructions for bootstrapping the system. One thing missing from the release is a compiler that compiles the output from the OMeta parser generator to Church files. That means it’s not possible to change the grammars just yet. Another incomplete feature is that Church and State macros are hard-coded into the compiler. If you look at church-pass1.church and state-pass1.church you’ll see the various hard-coded macros (some of which are quite complex). To be able to include these macros in the source files where they are used I need to be able to dynamically compile and load church code. I’ve completed the first step of this process, see state-dynamic.church and church-test-dynamic-alloc.church for working code that can compile a church file down to native code, allocate memory for it and link it into the running image. Once I have Church macros working, I plan to rewrite a lot of assembler-i386.church to use macros instead of functions for emitting machine instructions. I think that this will dramatically improve compilation times. While preparing for this release I did a lot of work on performance, even removing array bounds checking and some other safety checks to make it faster. Currently the system bootstraps in 90 seconds on my laptop, but my goal is to be 2 or 3 times as fast. John Leuner _______________________________________________ fonc mailing list [email protected] http://vpri.org/mailman/listinfo/fonc
