[staapl www tom@zwizwa.be**20090925130152 Ignore-this: 114f2df690c7a43eb55bfc1f45e0661b ] hunk ./www/index.html 12 - using techniques based on - the Forth - and Scheme - programming languages. It acknowledges the similarities between the - two languages by bridging them at the metalanguage level: Scheme - functions and Forth macros (immediate words) are unified into a - functional concatenative - language that meshes well with Scheme's lexical name structure. - -

While Staapl can be used as a Forth compiler, the main focus of - the project is on providing - metaprogramming - abstractions in the Scheme language, to build special-purpose code - generators as an extension of a low-level Forth-like language. - + using code generation techniques (metaprogramming / staging / + partial evaluation). It is embedded in + the Scheme + programming language in a way that meshes well with Scheme's lexical + name structure. The aim is to provide a general framework to + experiment with + point-free + (algebraic) domain specific languages. hunk ./www/index.html 21 +

Stack languages are an important class of point-free languages, + useful as general purpose programming language. Staapl contains a + general-purpose low level language based + on Forth. + It currently has an optimizing compiler for the Microchip PIC18 + architecture, and a tethering mechanism with interactive console for + running-target code updates. hunk ./www/index.html 35 - with phase separation. + with phase separation. Most of Staapl is organized around a + convenient abstract syntax based on a + typical + concatenative combinator language like Joy. This syntax can + then be used as a base for different interpretations or as a target + for concrete syntax frontends. hunk ./www/index.html 42 -

Next to the stack language building toolbox, Staapl includes a - - Forth syntax frontend (implemented as a PLT - Scheme #lang), an optimizing code generator for the - Microchip PIC18 - microcontroller architecture, and a Forth-style interactive console - for debugging and testing built on top of target interaction code - written in Scheme. +

Point-free languages are easily manipulated on the meta-level + which amkes them an ideal code generation target. 1. Such languages + have no variables that complicate code generation due to scope + issues (hygiene). 2. Thanks to the associativity of the operations + of concatenation (syntactically) and function composition + (semantically), computations are trivially partitioned in compile + time and run time. 3. Reliance on combinators for program structure + (as opposed to explicit recursion and loops) allows for the + derivation of program transformation laws that can be used for + program derivation or compilation to efficient implementations. hunk ./www/index.html 60 - with domain specific languages for DSP and embedded control and more - elaborate compilation techniques to implement them. + with point-free domain specific languages for DSP/control, static + verification, and more elaborate compilation techniques to implement + them. I am currently working on a constraint/dataflow language. hunk ./www/index.html 65 - cores, and I've been looking into porting staapl to dsPIC. While - Staapl's niche is microcontrollers, larger 32 bit machines are - intended to be supported through a C backend for which there is - preliminary code, to facilitate integration in heterogeneous - 32-bit/8-bit systems. - + cores, and I've been looking into porting staapl to PIC24/30/33 + (dsPIC). Other architectures will be implemented when needed. + Currently a a C code generator and analyser is in the works. + Prospected are an LLVM generator and a TI C64x linear assembly + backend. hunk ./www/index.html 110 - problems in the embedded DSP/control field. I am particularly - interested in integration with existing development systems. - Additionally, I am looking for projects that allow the development - of backends for different machine architectures, and tune the - backend API to make this process as simple as possible. - For more information please contact me directly. + problems in the embedded DSP/control field. Read this as: I would + like to raise the abstraction layer for your embedded application by + building a code generator for your specific ASM or C target. + I am particularly interested in integration with existing + development systems. Additionally, I am looking for projects that + allow the development of backends for different machine + architectures, and tune the backend API to make this process as + simple as possible. For more information please contact me + directly.