lone
jank
lone | jank | |
---|---|---|
7 | 24 | |
301 | 1,492 | |
1.7% | 5.0% | |
9.6 | 9.5 | |
5 days ago | 5 days ago | |
C | C++ | |
GNU Affero General Public License v3.0 | Mozilla Public License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
lone
-
How to Write a (Lisp) Interpreter (In Python)
I made something somewhat close to that: a freestanding lisp. It targets the Linux kernel directly. No libc.
https://github.com/lone-lang/lone
-
Boehm Garbage Collector
> register scanning isn't portable
Certainly not but it wasn't particularly hard to implement either. I just wrote some inline assembly for every architecture. Here's my programming language's x86_64 and aarch64 implementations:
https://github.com/lone-lang/lone/blob/master/architecture/x...
https://github.com/lone-lang/lone/blob/master/architecture/a...
-
Show HN: Self-contained Linux apps in Lisp
Not too long ago, a project of mine was shared here on HN.
https://news.ycombinator.com/item?id=38126052
In that thread I wrote:
> I have this vision in my mind: embedding lone modules into sections of the lone ELF and shipping it out. Zero dependencies, self-contained.
I've been working on that since that day. Proud to say I've gotten it to work and thought I'd make it the subject of my first Show HN. Some free software projects gained features along the way too.
The link is to an article with a proper demonstration, technical details and what happened in the past few weeks.
The complete repository itself can be found here:
https://github.com/lone-lang/lone
I've completely reorganized it since the last thread. Would be very happy if you guys tried it out.
- A standalone zero-dependency Lisp for Linux
-
Decoded: GNU Coreutils
To test my programming language. It's a freestanding lisp interpreter that doesn't link to libc. I wrote the code that handles the environment variables and in order to test it I needed full control over the program's inputs including its environment. The env utility provides this control by emptying the environment and setting only the variables I specify, solving 90% of the problem. Only thing I still can't control is argv[0]. With this new feature upstreamed, my test suite will be complete.
Here's the code if you'd like to take a look:
https://github.com/lone-lang/lone#testing
https://github.com/lone-lang/lone/blob/master/scripts/test.b...
-
Writing Small CLI Programs in Common Lisp (2021)
> only to be confronted with the notorious 'incompatible glibc version error'. It's super annoying.
I started making my own freestanding Linux Lisp because of this exact issue. It's nowhere near as performant as something like SBCL but it's small and once compiled has no dependencies and will literally run on any Linux.
https://github.com/lone-lang/lone
I'm taking a break from this project but I plan to add a feature where I can put a Lisp script into the ELF itself so I can just copy it with the scripts included.
-
The 90s Developer Starter Pack
The kernel just puts the data contiguously on the stack. Obtaining pointers to them can seem somewhat magical if you're writing a nolibc program but I wouldn't call it horrible.
I implemented it for my programming language with some rather simple assembly code:
https://github.com/lone-lang/lone/blob/master/arch/x86_64.c#...
https://github.com/lone-lang/lone/blob/master/arch/aarch64.c...
jank
- Jank programming language: a dialect of Clojure with minimal runtimes
-
CERN Root
I definitely asked for it. I'm using Cling for JIT compiling my native Clojure dialect: https://github.com/jank-lang/jank
Without Cling, this sort of thing wouldn't be feasible in C++. Not in the way which Clojure dialects work. The runtime is a library and the generated code is just using that library.
-
Try Clojure
There's an ongoing effort to create a Clang/LLVM implementation of Clojure's runtime with hot reloading and other very interesting features. You can take a look at it at https://jank-lang.org/. It still hasn't reached feature parity with full blown JVM Clojure but we've paying close attention to its development.
- Jank programming language – Clojure/LLVM/C++
-
Compiling a Lisp
There's an effort afoot to bring this to the Clojure world, with the lovely name jank: https://jank-lang.org
-
A Tour of Lisps
I also liked that reference since I had not heard of Jank before. It is a work in progress so I just added a calendar entry for 9 months from now to check it out. https://jank-lang.org/
-
Boehm Garbage Collector
There will be a lot of room for this, once I build out more of the features. In particular, there will be a lot of Clojure libraries which need to gain jank support. Clojure doesn't require "porting", so to speak, since it has a special .cljc file which can use reader conditionals to check the host that it's in (clj, cljs, cljr, jank, etc). So anywhere those libs are using Java interop, we'd need to wrap it to use native interop instead.
On the compiler and tooling itself, I have some open issues here: https://github.com/jank-lang/jank/issues
The vast majority of it is heavy C++ work, though. Outside of that, the biggest gains will come from time spent on packaging, distribution, and testing on various platforms.
And if none of that sounds interesting or applicable, don't worry. Just be sure to join the Slack channel and hang out with us. :)
-
Using C++ as a scripting language, part 8
On the top of using C++ for scripting, and related to the discussion of CERN's ROOT/Cling, I am developing a Clojure dialect on C++/LLVM called jank: https://jank-lang.org/
jank is a true Clojure, meaning you get interactive, REPL-based development and a whole stdlib of persistent, immutable data structures and functions to transform them. But it's also C++, so you can write inline C++ within your jank source, and interpolate jank values within that. You can link with existing native code using LLVM and you can embed jank into your existing native projects to use for scripting.
jank is pre-alpha, right now, and I've only been showing it to Clojure devs so far, but there's a huge audience of C++ devs which may be interested in introducing Clojure to their native code.
- Leaving Clojure - Feedback for those that care
-
[ANN] London Clojurians Talk: The jank programming language (by Jeaye Wilkerson)
jank (https://jank-lang.org/) is a Clojure dialect on LLVM with C++ interop. In this talk, Jeaye will cover jank's use cases, some challenges around building a native Clojure dialect, and some insights about Clojure itself found only by spelunking deep into the Clojure compiler.
What are some alternatives?
mxe - MXE (M cross environment)
graalvm-clojure - This project contains a set of "hello world" projects to verify which Clojure libraries do actually compile and produce native images under GraalVM.
CIEL - CIEL Is an Extended Lisp. Scripting with batteries included.
wyvern - Automatic conversion of call by value into call by need in the LLVM IR.
ohrrpgce - Official Hamster Republic RPG Construction Engine (mirror of SVN repository)
schema-inference - Schema Inference of Malli Schemas
freebsd-src - The FreeBSD src tree publish-only repository. Experimenting with 'simple' pull requests....
pil21 - PicoLisp is an open source Lisp dialect. It is based on LLVM and compiles and runs on any 64-bit POSIX system. Its most prominent features are simplicity and minimalism.
src - Read-only git conversion of OpenBSD's official CVS src repository. Pull requests not accepted - send diffs to the tech@ mailing list.
clasp - clasp Common Lisp environment
liblinux - Linux system calls.
bf_jit - Over-engineered JIT compiler for bf