LambdaNative: a Scheme development environment for ten platforms, now sunset
LambdaNative is a cross-platform development environment written in Scheme, supporting Android, iOS, BlackBerry 10, OS X, Linux, Windows, OpenBSD, NetBSD, FreeBSD and OpenWrt.
At a glance
- What is it?
- LambdaNative built cross-platform applications in Scheme on top of Gambit-C, with a configure script, a make.sh driven Makefile and demonstration games as documentation. Its README now says the project is sunset and looking for new maintainers, and the last release was in April 2024.
- Who is it for?
- LambdaNative is worth reading for a team that wants to see one coherent way to ship a GUI application from a single Scheme codebase across desktop and mobile, because the repository is an unusually complete example of that, with the cross-compilation machinery, the loaders and the applications all in one tree.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Scheme, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.
Star history
- part-cw/lambdanative1,425 ★ · +0
| Repository | 2026-10-17 | 2026-11-07 |
|---|---|---|
| part-cw/lambdanative | 1.4k | 1.4k |
0 Stars in the last 21 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The first line of the README is the news
The LambdaNative README does not open with a description. It opens with a status:
LambdaNative is Sunset and in need of new maintainers. Please see the issue at number 475 for details.
Everything after that is written as a description of a working product, which is what makes the repository a slightly odd read. A cross-platform development environment written in Scheme, on Gambit-C, supporting Android, iOS, BlackBerry 10, OS X, Linux, Windows, OpenBSD, NetBSD, FreeBSD and OpenWrt. That list of ten platforms is still the outline of the project: one Scheme codebase, one set of abstractions, and a build system that produces a native application on each target.
The state of the repository is consistent with the notice. The recent releases are v1.1.2, described as the fifteenth minor release, from 2024-04-30, v1.1.1, the fourteenth minor release, from 2020-12-02, and v1.1, the first new major release, from 2020-10-01. The last push was on 2026-06-02, so the branch is still touched, and the project is not archived.
There is one more thing to check before reading further, and it is a licensing question. The introduction describes the project as open-source and BSD licensed, while the repository metadata does not classify the licence under a standard name and points at the `LICENSE` file. So the file in the root is the authoritative text, and the BSD claim in the prose is not something to rely on. This is not a nitpick: a framework that a team adopts becomes a dependency in their own distribution, and the licence terms are what they will be asked about later.
The project is written in Scheme, the primary language of the repository, the topics are the framework and the language, and the homepage is lambdanative.org.
The build is a configure script and a make.sh
The root of the repository is a conventional Unix build, which is what you expect from a project that has to cross-compile to ten platforms.
There is a `configure` script, a `config.guess` beside it, and `LNCONFIG.h.in` as the template for the generated configuration header. There are also two template files, `PROFILE.template` and `SETUP.template`, and a `VERSION` file, so the version of the build is a text file rather than a number buried in a build script.
The Makefile is a thin front end over a shell script, and every target delegates:
all:
@ ./make.sh all
clean:
@ ./make.sh clean
install:
@ ./make.sh install
package:
@ ./make.sh package
info:
@ ./make.sh infoThe full set of targets is longer than that, and the names describe the workflow: `install-tool` installs the toolchain, `executable` builds the executable, `payload` builds the payload, `gcc` is the compiler-specific path, `smoke` is a quick check, `scrub` cleans the tree, and there is an `.emacs` target for the editor integration. The `info` target in particular is the kind of thing a cross-compilation toolchain needs, because the first question for a new platform is what the system reports about itself.
The design decision here is that the Makefile is not the build. The build is `make.sh`, and the Makefile exists so that the usual commands work and so that the repository reads like a normal Unix project to someone who has never seen it.
Gambit-C underneath, and a paper to cite
The implementation language is Scheme, and the compiler is Gambit-C, which is the piece of the stack that determines what the project can do.
Gambit-C is a Scheme implementation that compiles to C, which means the Scheme code is portable in the way that compiled C is portable, and a cross-compilation toolchain can target a platform by changing the C compiler and the target headers. That is what makes a single Scheme codebase able to produce an application for ten operating systems, and it is why the framework is built as a set of targets rather than as a set of ports.
The framework also abstracts the parts of a platform that a GUI application touches, and the repository layout shows how much of that there is. The `targets/` directory holds the per-platform definitions, the `loaders/` directory holds the loading mechanisms, `modules/` and `libraries/` hold the runtime pieces, `plugins/` holds the extensions, `tools/` the build and development tools, `scripts/` the helper scripts, `templates/` the project templates, and `languages/` and `fonts/` the localisation and typography assets. The `apps/` directory holds the demonstration programs, and `docs/` holds the documentation including the framework slideshow.
There is also an academic artefact, which is unusual for a tool repository and is a sign of how the project was built. If you use the LambdaNative framework for your own work, the README asks you to reference the ICFP paper, and a slideshow describing the framework is linked from the repository. So the design decisions, the platform abstraction and the reasons for them are written down somewhere other than in the commit history, which is a genuinely useful thing to have when you are reading a codebase that is not being maintained.
Applications as the documentation
The `apps/` directory is where the framework explains itself, and the three named programs are the argument.
There are demonstration programs, including the games uSquish and LineDrop, and a Calculator. The two games matter more than the calculator, and the reason is what a game has to do. A game has a render loop, an input model, animation, a sound path if it has one, and assets, and it has to keep all of them running at a frame rate on a device that is not a workstation. So a game is a torture test for a GUI framework, and a framework that ships two of them is telling you that it has been tested on the hard cases.
The Calculator is there for the other reason. It is a small program that anyone can read in a sitting, and it shows the ordinary path: a layout, some widgets, a callback, and no performance tricks. A framework whose simplest example is legible is a framework whose other examples can be trusted.
There is a note in the README about the examples and the documentation being in the wiki, with a link to the wiki home for the getting started instructions and the API documentation, and the repository has a `docs/` directory with the slideshow and other material. The combination of a wiki for the prose, the applications for the worked examples and the issue tracker for the gaps is a coherent arrangement for a project of this age, where the wiki was the normal place for that kind of documentation.
Issues first, wiki second, discussions for the rest
The feedback section is short and it is a contribution policy with a specific order to it.
The project asks for bug reports, code fixes, ideally in the form of pull requests, corrections and missing information about API calls, through the issue tracker. It points readers at the closed issues for solutions to past problems, which is a small courtesy that saves a maintainer from answering the same question twice, and it notes a beta GitHub Discussions feature for general discussions, which is a newer addition to a project with a long history.
The documentation contribution rule is the unusual one: to contribute documentation and examples, modify the wiki directly. Not the repository, the wiki. So the split is that code and issues go to GitHub and prose goes to the wiki, and a contributor has to know which is which before starting.
The issue tracker is also where the project's status is communicated, because the sunset notice points at issue 475 for the details. That is a pattern worth noticing: a maintainer who is stepping away from a project with users can put the reasoning in one long issue and link to it from the README, so that the record survives the person.
For a project with a wiki, an issue tracker and a discussions board, the practical consequence for a new user is that the answer to a question is most likely in one of the three, and the README tells you which: issues and closed issues for problems, the wiki for instructions and API documentation, and discussions for general questions.
Where LambdaNative is the wrong tool
The limits are the ones that follow from adopting a development environment rather than a library, and the first of them is decisive.
The first is that the project says it is sunset. A sunset notice with a request for maintainers means that every bug, every platform update and every security issue from now on is the adopter's problem. A team that adopts LambdaNative is adopting a Scheme compiler, a cross-compilation toolchain, a set of platform loaders and a framework, and is signing up for the maintenance of all of it. For a personal project that is a reasonable trade, since the alternative is writing a GUI layer, and for a product it is not.
The second is the size of the commitment relative to the alternative. If the goal is a desktop application in Scheme, Gambit-C on its own can produce a native executable, and the framework's value is in the parts a GUI application needs: a widget set, an event loop, a rendering path, and the platform glue. Those are real value, but they are the value of a whole framework rather than a package, and the maintenance of a whole framework is what a team is signing up for.
The third is the platform list, read in 2026 rather than in 2013. BlackBerry 10 is in the list, which tells you the project's prime, and a framework whose newest release is from April 2024 and whose last push was in June 2026 will not have a modern mobile target, a current toolchain story, or the platform work that a new operating system release always requires. The ten-platform claim was impressive; today it is a list of ten things to check.
The alternative for a Scheme developer is to use Gambit-C directly and pick a GUI layer of your own, or to use a different language for the application and keep Scheme for what it is good at. The difference in approach is that LambdaNative is a complete environment with its own toolchain and its own platform abstractions, and the alternative is a compiler and a set of parts, and the first is more convenient exactly until the day somebody has to maintain it.
Editorial conclusion
LambdaNative is worth reading for a team that wants to see one coherent way to ship a GUI application from a single Scheme codebase across desktop and mobile, because the repository is an unusually complete example of that, with the cross-compilation machinery, the loaders and the applications all in one tree. It is the wrong thing to adopt today, since the project declares itself sunset, the last release is from April 2024, and anyone starting on it is signing up to maintain the toolchain as well as the application. Before doing anything with it, read the `LICENSE` file rather than the BSD claim in the introduction, because the repository metadata does not classify the licence, and read issue 475, which is where the maintainers put the detail about the project's status.
Frequently asked questions
What is LambdaNative?
It is a cross-platform development environment written in Scheme on top of Gambit-C, supporting Android, iOS, BlackBerry 10, OS X, Linux, Windows, OpenBSD, NetBSD, FreeBSD and OpenWrt. It provides a virtual DOM style view layer, a component model, a build system and demonstration applications.
Is LambdaNative still maintained?
No. The README states that LambdaNative is sunset and in need of new maintainers, with the details in issue 475. The last release was v1.1.2, the fifteenth minor release, on 2024-04-30, and the last push to the repository was on 2026-06-02.
How do you build LambdaNative?
The Makefile delegates to a shell script, with targets including all, clean, install, install-tool, package, executable, payload, info, gcc and smoke, each running the matching make.sh target. The repository also carries a configure script with config.guess, an LNCONFIG.h.in template, and PROFILE.template and SETUP.template files.
What licence is LambdaNative under?
The introduction describes the project as open-source and BSD licensed, but the repository metadata does not classify the licence, so the LICENSE file in the root is the text to rely on. The README also asks users of the framework to reference the ICFP paper on LambdaNative.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/part-cw-lambdanative)Star history chart for your README
[](https://hysenlabs.com/projects/part-cw-lambdanative)Was this useful?