Hacker News new | ask | show | jobs
by matheusmoreira 8 days ago
Thanks for reading and for your interest in lone!

> I also love the APE setup

Yeah, jart's cosmopolitan is awesome. I've even sent some floating point code her way!

I have my own take on the "embed data into the executable" problem too. It's the one thing I've made that I think is truly novel. I developed a tool to copy the data into the ELF in such a way that Linux mmaps it in automatically. Lone can just reach it at runtime via the auxiliary vector. No need to read /proc/self/exe.

You might enjoy this article:

https://www.matheusmoreira.com/articles/self-contained-lone-...

The ELF editor is written in C right now. I'm getting the language ready to host it as a lone application. That'll make it easy to redesign this feature and develop even more high level features on top of the code loading.

https://github.com/lone-lang/lone/issues/8

1 comments

Really enjoyed the interview, and love the ideas behind Lone Lisp. I was curious, does it run on jart's Blink project, the tiny x86-64-linux emulator? https://github.com/jart/blink/
Just tried it!

The lone interpreter itself runs flawlessly:

  lone <<<'(import (lone print)) (print "Hello, world!")'
  blink lone <<<'(import (lone print)) (print "Hello, world!")'
  blink lone <<<'(import (lone print) (math +)) (print (+ 1 1))'
It failed to load an interpreter with a lone-embedded lisp program though. Rejected it as an invalid ELF because of a bug in my ELF editor.

The embedded segments my tool generates are page aligned and end up extending past the end of the file. Linux doesn't care, it mmaps those non-existent file regions just fine as zero filled pages. Blink rejects the ELF as invalid instead.

I'd say blink's behavior is correct but divergent from the Linux it's supposed to be emulating. Created issue #215 about it:

https://github.com/jart/blink/issues/215

Nevertheless, I plan to push out a fix for this issue as soon as I'm done with the last rounds of code review.

Thanks for your interest in lone lisp!!

Very cool! I'm learning a lot from studying how Lone Lisp works, and will be exploring how to run it on Blink, which is itself a lovely educational project. Someone managed to port the latter to WebAssembly, so eventually I'd like to experiment with that too, not only for running in the browser but as a cross-platform (or platform agnostic) layer maybe. https://github.com/robalb/x86-64-playground

Anyway, looking forward to following Lone's progress. The technical details in the interview and in the articles on your site are so interesting, somewhat over my head but that's exactly the kind of material that I enjoy learning from. (:

> Someone managed to port the latter to WebAssembly

So that means lone could theoretically run on the browser via Blink. Will make for a great demo someday.

Feel free to post here or email me if you have any questions!