How is it even possible to write a kernel in Common Lisp? I thought kernels didn’t have enough to support the run time environment of languages that weren’t C, C++, or Rust?
Even Rust C++, and C require special compilation without parts of the Stdlib to running in the kernel.
Nope. It is a modern from scratch attempt at writing an OS purely in Common Lisp.
It is still very far from being useful for daily use or even getting close to the development experience of an Lisp Machine but for an Hobbyist OS, it is already quite impressive. Most OS projects don't even make it to the runs on real hardware step.
I am playing with and learning April[1], a subset of APL that compiles to Lisp. It is a blast for me, because I had programmed a bit in Lisp in the 90s, and then I found J around 2011/12. I always loved Lisp, and I didn't really get into Clojure, although it is a nice language. I had heard of APL when I had my Commodore PET 2001 in 1977 and my Vic20 later, but I never got to play with it. Once I did back in 2015, and the APL characters resonated with me (hard to find keyboard input workarounds etc.) because I was free of the associations of ASCII and the symbols made sense as I learned it a bit in their graphic representation and function. I have dreamed of having a real, modern Lisp Machine, so maybe I can get some of that with Mezzano. I am not sure how hard or easy it would be for April's creator, Andrew Sengul (##phantomics) to swing that, but I would participate in a crowdsourcing of it (on The Framework notebook[2] would be the icing on the cake!). I don't know enough of Mezzano to say how vialbe it really is, but I am hoping! I didn't quite get April right away, but I am really starting to appreciate it (with Andrew's help, and the APL community). Andrew's 'Why April' section, poetic and seemingly hyperbolic, is ringing less hyperbolic and more true as I get to know this twisted marriage of PLs: Lisp's legacy, tons of libs, emacs/slime, debugging, and parentheses, yes those beautiful things, to handle all the "front end" programming you could ever need, to feed the array-munching and alchemy of APL. And what about Python? I refer all Pythonistas to take heed of their and MIT's sinful choice to worship the serpent and casting us out from the garden of Lisp! Just read Milton's Paradise Lost, Book X, around verse 550-ish ;)
Machine learning which is heavily based on arrays or array math in their implementation, hence the popularity of libs to handle them like Pandas and NumPy (inspired by J, by the way. Ask Wes McKinney), has some nice nuggets or implementations of an ELM (Extreme Learning Machine) in J called 'JELM'[3], CNNs in APL[4] with some benchmarks, or getting APL into optimized GPU code via Futhark[5] and apltail[6]. And under some of those covers is Haskell as a treat!
Milton reference for the pious (with no parentheses;) or proper line breaks, sorry!)
Now Dragon grown, larger then whom the Sun
Ingenderd in the Pythian Vale on slime,
Huge Python, and his Power no less he seem’d
Above the rest still to retain; they all
Him follow’d issuing forth to th’ open Field,
Where all yet left of that revolted Rout
Heav’n-fall’n, in station stood or just array,
Sublime with expectation when to see
In Triumph issuing forth thir glorious Chief;
They saw, but other sight instead, a crowd
Of ugly Serpents; horror on them fell,
And horrid sympathie; for what they saw,
They felt themselvs now changing; down thir arms,
Down fell both Spear and Shield, down they as fast,
And the dire hiss renew’d, and the dire form
Catcht by Contagion, like in punishment,
As in thir crime.
This looks really cool! May have to try it in a virtualbox or something.
Does anyone know of anything similar to this, but in an image like Pharo/smalltalk has? Would love a fully interactive Common Lisp environment, built in debugger, window system, etc (that's open source)
There is a try to resurrect the Interlisp (https://interlisp.org/), but it is just for preserving the old Gem.
Anyway, it is a true tragedy that Genera and Interlisp do not have any modern open successor that would coin and improve the great legacy like Smalltalk has in the form of Pharo.
As always, thanks for the helpful commentary! I recall watching some recent symbolics demos (someone got it running on a VM I think) and everything did look slick.
It's best described as completely something else than Linux.
Mezzano is an OS and desktop environment written from scratch in Common Lisp (including a CL compiler). It is a hobbyist project with several contributors but with most of the work done by one prolific programmer.
Give these phones a break, it's ok for a prototype not to support every format under the sun, even the more mainstream ones. Your comparison with Debian, a well-finished product which gets a lot of money and dedicated human resources to be made polished as hell is a bit unfair.
Keep in mind WebM is only a decade old, it takes time to support a patent-free video format that has readily available implementations, including BSD-licensed software ones. I'm sure Apple will support WebM when they find some money and finally manage to bring iPhones out of beta. Not every small phone producer making it is as big as Debian.
Anyway, if the default browser does not support something it should be easy to install an alternative browser, dumb phones from fifteen years ago had this ability (remember Opera Mobile?) and I hear iPhones are a bit more advanced so I'd expect them to let you do that. What kind of web-capable half-modern device wouldn't anyway.
You are right - Apple should bend the knee and support everything Google shoves into the web without question, just like Mozilla. That's working very well for them.
Come on, I don't like Google and their control on the web. I go out of my way to avoid them. But we cannot blame them for providing us with a decent video codec for which you don't need to pay patent fees. That was truly missing at the time. We had Theora but it is far from being as good. We needed a good open video format at the time.
Apple is holding back on WebM support arguably because it has interests in forcing people to keep using patent-encumbered codecs from the MPEG-LA. They did nothing for pushing an open video format for the web, quite the contrary. They are still fighting against this. Apple is the one deserving to be pointed the finger at. Let's not divert the blame here. I hate Google but we should recognize the rare good things they occasionally do.
All I want is a bare metal browser. I don't want an operating system and I don't want to run chromium OS. It would be great to see a bare metal browser that implements something like Gecko.
Unless GP's objection to chromium OS is entirely because it's chromium, I don't think Firefox OS would be any better as it's essentially the same thing, Firefox running on Linux (not on bare metal)
Without writing the entire browser from scratch, I don't personally think there's much point to this. I suspect if you traced down the library/runtime requirements for Firefox and reimplemented them in a bare metal runtime, you'd end up with something remarkably complex and not much simpler than Linux + runtime in the end.
This is assuming you want a full browser capable of everything Firefox and Chromium are, which includes things like WebGL. If you cut out components, you can definitely reach a point where a bare metal browser is sensible, the question is how much are you willing to sacrifice from "web standards" and how much work are you willing to do reimplementing a kernel, TCP/IP stack, device drivers, etc...
I cannot imagine a unikernel with all the drivers ready for a reasonable variety of PC hardware, unless it's able to reuse Linux or at least FreeBSD as a source of drivers.
I don't know if this is exactly "bare metal". I think it uses GRUB as a hardware abstraction layer. AFAIK GRUB is not particularly high performant, so it will probably be somewhat slow.
Thanks for correcting me. I think I misunderstood this part:
> The resulting GRUB module, mezzano.mod, is largely the KBoot Mezzano loader code, ported to use GRUB facilities for memory allocation, disk access, etc. It’s feature-complete, so I released it to Sourcehut. (I’ve only tested it on Libreboot GRUB, not GRUB loaded by other firmware implementations.)
Even Rust C++, and C require special compilation without parts of the Stdlib to running in the kernel.