13 ms·
ChrysaLisp – A 64-bit Lisp OS with GUI
- bespoke_engnr 9y agoI just saw this come up in an arpilisp discussion thread (https://github.com/marcpaq/arpilisp https://github.com/marcpaq/arpilisp). ChrysaLisp is an Assembler/C-Script/Lisp 64 bit OS. MIMD, multi CPU, multi threaded, multi core, multi user, and will build from source in ~2 seconds on most OS X or x64 Linux desktops. Maybe this will let me live vicariously through someone who has actually built the project I always dream of creating in my free time.
- dogprez 9y ago> Maybe this will let me live vicariously through someone who has actually built the project I always dream of creating in my free time. You too!?
- bespoke_engnr 9y agoHeh, maybe you'll get a kick out of http://nand2tetris.org/ http://nand2tetris.org/ (if you haven't come across it already). I finally finished part 1 of the course (implementing the Hack machine) and it was one of the best and most challenging learning experiences I've ever had. My plan is to do part 2 (VM, high level language, OS) with Lisp instead of the language they implement. That's been the plan for the last 6 months, anyway...
- eradicatethots 9y agoIt’s probably best to not do side projects. The bang for your buck is pretty low.
- dogprez 9y agoCool, I'll check it out. I have a few lisp projects in the works. I started making a simple lisp operating system for 16-bit intel by forking MikeOS, which is an awesome project (didn't get that far). Then I developed a Forth VM / Compiler to build a lisp on top of (since compiling to my own forth assembly will be easier than targeting a real assembly). I got the forth compiler and vm, no lisp yet =T
- tejaswiy 9y agoI started on this path, got through the boot-up, interrupts etc. and to a simple shell. Once that was done, instead of targeting something simpler like malloc(), I wanted to get a VGA driver working. VGA drivers are notoriously hard and I really wanted my OS to have a UI so after a couple of weeks of studying and getting nowhere, I gave up on the whole project. I think the one major thing that caused me to give up on the project was whenever it became time to refactor or to think about the big picture (for ex. where do the drivers live? what about a libc implementation - can you just get glibc to work on your OS? Or do you have to rewrite the whole of libc?), I found that I was just copying whatever linux had already done. The feeling that I wasn't really doing any original work and am making a shittier version of an existing system demotivated me for some reason even though this was just supposed to be a learning exercise. So some advice for anyone attempting this - be prepared to go out of your way to rewrite significant amounts of helper code that has nothing to do with actually building your OS.
- kryptiskt 9y agoFor a libc on a weird OS I would recommend newlib (https://sourceware.org/newlib/ https://sourceware.org/newlib/), which is a libc for embedded systems and so has a well-defined way to implement the basic stuff that it needs to run.
- d08ble 9y agoVery interting, my dream too. I made similar OS. ACPU OS run on mobiles/desktop/browsers/bare-metal, with multiuser p2p team development livecoding, time travel debugger, multiple libraries, startup in 30 seconds on iPad in development mode with synchronization, compile sources & symbol navigations, etc. Powered by ACPUL programming language. Here is OS API: https://github.com/d08ble/acpul-demo/tree/master/sys https://github.com/d08ble/acpul-demo/tree/master/sys Simple multiplayer DOTA game prototype: https://github.com/d08ble/acpul-demo/tree/master/dota https://github.com/d08ble/acpul-demo/tree/master/dota Some demos: https://www.youtube.com/watch?v=pk58kWIAqMM https://www.youtube.com/watch?v=pk58kWIAqMM https://www.youtube.com/watch?v=UsQklNVUDwM https://www.youtube.com/watch?v=UsQklNVUDwM https://www.youtube.com/watch?v=ubNfWarTawI https://www.youtube.com/watch?v=ubNfWarTawI Follow us: https://twitter.com/ACPUStudio https://twitter.com/ACPUStudio
- pjmlp 9y agoThis is quite cool.
- xmichael99 9y agoFor me, calling something an OS requires it to have it's own kernel ... maybe thats just me, but I think this is the 2nd project this month which has called itself an OS when in reality it is just a GUI.
- tyingq 9y agoLooks like it might evolve that way... "Could move to bare metal eventually but it's useful for now to run hosted while experimenting" And this: https://github.com/vygr/ChrysaLisp/blob/master/sys/kernel.vp https://github.com/vygr/ChrysaLisp/blob/master/sys/kernel.vp
- phoe-krk 9y agoIt already has a kernel, except it uses the host OS's system calls instead of its own drivers. Once you have a runnable OS that runs as a separate Unix process in its own address space, it is actually possible to port it over to bare metal by providing all the modules that the OS would normally provide: memory management, graphics, device management and HAL, keyboard/mouse input. See https://github.com/froggey/Mezzano https://github.com/froggey/Mezzano for something that can run on bare metal.
- mypalmike 9y ago> port it over to bare metal by providing all the modules that the OS would normally provide: memory management, graphics, device management and HAL, keyboard/mouse input. In other words, it can become an OS if you merely add to it the exact things that define an OS.
- tyingq 9y agoDoes this roughly offer the same benefits that the old lisp machines provided? I've never used one, but have heard people rave about how productive they were on them.
- dsgfhasgjklas 9y agoDoesn't look like there's anything like CLIM support, unfortunately.
- lisper 9y agoNo. I expect this will be a fairly controversial comment, so I want to preface this by saying that I'm a big Lisp fan (just look at my handle). Lisp is my favorite programming language. I've been using it for nearly forty years. My first Lisp was P-Lisp on an Apple II in 1980. And I worked on Symbolics Lisp machines in the 1990s. They were very cool, but there's a reason they failed: general-purpose computing is infrastructure, and the economics of infrastructure are such that having a single standard is the most economical solution, even if that standard is sub-optimal. For better or worse, the standard for general-purpose computing is the C machine. Because it's general-purpose you certainly can run Lisp on a C machine (just as you could run C on a Lisp machine). You can even do this at the system level. But Lisp will always be at a disadvantage because the hardware is optimized for C. Because of this, C will always win at the system level because at that level performance matters. But that in and of itself is not the determining factor. The determining factor is the infrastructure that has grown up around the C machine in the last few decades. There is an enormous amount of work that has gone into building compilers, network stacks, data interchange formats, libraries, etc. etc. and they are all optimized for C. For Lisp to be competitive at the system level, nearly all of this infrastructure would have to be re-created, and that is not going to happen. Even with the enormous productivity advantages that Lisp has over C (and they really are enormous) this is not enough to overcome the economic advantages that C has by virtue of being the entrenched standard. The way Lisp can still win in today's world is not by trying to replace C on the system level, but by "embracing and extending" C at the application level. I use Clozure Common Lisp. It has an Objective-C bridge, so I can call ObjC functions as if they were Lisp functions. There is no reason for me to know or care that these functions are actually written in C (except insofar as I have to be a little bit careful about memory management when I call C functions from Lisp) and so using Lisp in this way still gives me a huge lever that is economically viable even in today's world. I have web servers in production running in CCL on Linux, and it's a huge win. I can spin up a new web app on AWS in just a few minutes from a standing start. It's a Lisp machine, but at the application level, not the system level. My kernel (Linux) and web front end (nginx) are written in C, but that doesn't impact me at all because they are written by someone else. I just treat them as black boxes. I don't want to denigrate ChrysaLisp in any way. It's tremendously cool. But cool is not enough to win in the real world. [UPDATE] ChrysaLisp is actually doing the Right Thing with respect to its GUI by using a C-library (SDL). But it's trying to re-invent the compiler wheel (and the language design wheel) so that it can run on bare metal and "grow up to be a real Lisp machine" some day, and I think that aspect of the project is a fool's errand. There are already many Lisps that can run on bare metal (ECL was specifically designed for that). None of them have succeeding in displacing C, and I believe none ever will because the economic hurdles are insurmountable.
- rbanffy 9y agoCould look more like a Lisp Machine...
- steelbird 9y agoQuick start to get the GUI going (not so obvious from the README): $ clone https://github.com/vygr/ChrysaLisp.git https://github.com/vygr/ChrysaLisp.git ChrysaLisp $ cd ChrysaLisp $ sudo apt-get install libsdl2-ttf-dev $ make -j $ ./run.sh To quit: $ ./stop.sh
- scottyelich 9y agoand for OSX?
- antimass 9y agosee parent reply
- scottyelich 9y agomake cc -o obj/Darwin/x86_64/main obj/Darwin/x86_64/main.o -Wl,-framework,SDL2 -Wl,-framework,SDL2_ttf ld: framework not found SDL2 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [obj/Darwin/x86_64/main] Error 1 --- Yes, I have both frameworks installed. I even did the brew commands just for S&G ... same result after make command.
- antimass 9y agoDo you have "SDL2.framework" and "SDL2_ttf.framework" installed under "/Library/Frameworks"?
- schpaencoder 9y agoYes
- antimass 9y agoI don't know then. This is what I get on a fresh compile - note that it even specifies the framework paths in the command line options: antimass@gem:~/github/ChrysaLisp$ make echo x86_64 > arch echo Darwin > platform unzip -nq snapshot.zip cc -c -nostdlib -fno-exceptions \ -I/Library/Frameworks/SDL2.framework/Headers/ \ -I/Library/Frameworks/SDL2_ttf.framework/Headers/ \ -o obj/Darwin/x86_64/main.o main.c cc -o obj/Darwin/x86_64/main obj/Darwin/x86_64/main.o -Wl,-framework,SDL2 -Wl,-framework,SDL2_ttf antimass@gem:~/github/ChrysaLisp$
- gavanwoolery 9y agoOne can debate whether or not this is a "true" operating system, but I'd like to coin a (new?) term: "virtual operating system"...not to be confused with emulation or virtual machines, but rather an OS that runs on top of a host OS. One obvious use for such a thing is reskinning an underlying operating system in a non-trivial way, i.e. completely changing the UI paradigms. Another use is allowing programmatic access to virtually everything.
- craftyguy 9y agoSo a userspace application with ring0 access, or are you describing paravirtualization or containers?
- gavanwoolery 9y agoIt could technically fit any of those cases depending on the implementation, but the simplest path is probably building an application that disguises itself as an operating system. It could even be sandboxed to some degree and still probably suit most needs.
- mikepurvis 9y agoRobot operating system (ROS) is a bit like this. It sits on top of Linux or OS X but offers a message passing framework and some naming and type conventions for passing around data common in robotics, like transform information, laser scans, odometry, etc.
- Sir_Cmpwn 9y agoI would just call this a shell or a runtime environment. It's not an OS and I don't think we should co-opt that term. We don't call nurses virtual surgeons or construction workers virtual architects.
- gavanwoolery 9y agoI agree there is probably a better term, but the differentiation would be that you are abstracted one level up from a native shell, and thus could probably more easily write a cross-platform "virtual OS" that could run on top of Windows, OSX, etc - and install it with the ease of running an application, as opposed to fiddling with more sensitive things.
- scottyelich 9y agoI'm looking for a bare metal boot OS that has internet capabilities -- lisp or forth based (ONLY). Any pointers would be greatly appreciated.
- nicklaf 9y agoFirmworks has a open source implementation of OpenFirmware which is part of the OpenBIOS project, can be used with Coreboot, and implements TCP/IP with various protocols including HTTP, all in Forth. http://www.firmworks.com/ofwfeatures.htm http://www.firmworks.com/ofwfeatures.htm http://GitHub.com/openbios/openfirmware http://GitHub.com/openbios/openfirmware
- scottyelich 9y agoThank you.
- avodonosov 9y agoA Common Lisp one: https://github.com/froggey/Mezzano https://github.com/froggey/Mezzano
- nicklaf 9y agoInteresting. Looks like there aren't many drivers, though. I only see stuff about running it through QEMU or Virtualbox. Maybe somebody can try running it from OpenFirmware (see my my sibling post to yours), which has been ported to lots of platforms, and has lots of code one could borrow from in the way of drivers. Of course at the end of the day I guess the point of QEMU / Xen is to use Linux as a device driver.
- avodonosov 9y agoThanks for the link
- Annatar 9y agoHere is proof that Rust is unnecessary. Lisp comes from the past to save the future from itself.
- jstewartmobile 9y agoWe can start a LISP evangelism strikeforce and bomb the Rust threads the way the Rust guys bomb the C ones.
- flavio81 9y agoWhere do I sign?
- rurban 9y agoYou will be heavily downvoted by the Rust zealots, without any argumentation, even if your arguments are in their official docs. I try from time to time because their discrepancy of marketing talk to delivered features is even worse than with Perl. Comparing to this lisp os its a bit unfair though. This is an async distributed actor model os with various practical shortcuts. Refcounted with manually breaking up cycles. The lisp is very rough, but extremely fast. No linked lists (i.e. cons cells), just vectors. (Very good idea btw, same as in potion). A better macro assembler with message passing OO (smalltalk, Erlang but better than beam). I still want to see the other TAOS features though: selfrouting network, dynamic binding
- jstewartmobile 9y agoEven so, somebody needs to do it. What's the use of HN points if you never spend them? PS> musl libc is beautiful.
- Annatar 9y agoThey don’t just crash the C parties, anything or anyone that’s not on or who is not on Rust is fair game as far as they’re concerned. If you aren’t singing along with the Rust evangelism strike force party line and voice any kind of dissent expect severe repercussions justified by “lack of arguments”, even when the arguments presented are their own damning statements or criticise concrete code and syntax.
- xenophonf 9y agoI wonder how difficult it would be to move an existing Lisp to bare metal, like SBCL.
- bluefox 9y agoA bit of a stretch to call this a "Lisp OS" yet. If you look at the project's history, you can see that it was written in nasm, and at some point the author "slapped some parens around" and took steps to make it into an actual Lisp dialect, but it's not there yet, as it lacks many of the features you'd expect from a Lisp. Also see README_LISP.md.
- galaxyLogic 9y agoJavaScript has been called "Lisp in C's clothing". What it lacks is macros basically but you can get a lot of practical work done in JavaScript and it is as mainstream as it gets. So how about a JavaScript OS/Machine/Hardware anybody?
- nv-vn 9y agoJavaScript is really nothing like Lisp. Macros/code is data and simple syntax are basically the defining features of a Lisp. Apart from these, JavaScript's type system is totally different (way weaker, based on objects but nothing like CLOS), JS isn't based on lists/pairs as the primary data structure, JS emphasizes imperative programming, etc. I don't know where this myth came about (probably because rumor that Brendan Eich initially intended to use Scheme instead of JS, although this never happened).
- unkown-unknowns 9y ago> rumor that Brendan Eich initially intended to use Scheme instead of JS, although this never happened I wonder what'd have happened had he done so. Would it have grown to the size that JavaScript is at today, or would it have lost to something similar to JavaScript that some other browser would have implemented?
- nv-vn 9y agoI think it would've been replaced by a competing standard. Then again, the barrier of entry for Scheme is pretty low, there really wouldn't be much stopping people from using it. My prediction would be small-scale adoption of the Scheme standard, then a gradual phase out within a few years because a Netscape competitor (or maybe even the company itself) would have replaced with something more C-like because of complaints about parentheses.
- jstewartmobile 9y agoI believe they hired him under the impression of doing actual Scheme for the browser, but then they did the old corporate bait-and-switch on him: "The immediate concern at Netscape was it must look like Java. People have done Algol-like syntaxes for Lisp but I didn't have time to take a Scheme core so I ended up doing it all directly and that meant I could make the same mistakes that others make." http://bryanpendleton.blogspot.com/2009/11/coders-at-work-brendan-eich.html http://bryanpendleton.blogspot.com/2009/11/coders-at-work-br...
- avodonosov 9y agoNot exactly a Lisp OS - asm and C beneath. Compare to https://github.com/froggey/Mezzano https://github.com/froggey/Mezzano
- colesantiago 9y agoVery cool, interested in Lisp but I would like to know if any HN'ers would provide me some insight into why Lisp is so popular? Does anyone use it in production? Is it comparable to JS?
- DonaldFisk 9y agoLisp is popular? Where? It was almost mainstream in the 1980s when there were four Lisp Machine companies (Xerox, Symbolics, Texas Instruments, LMI) and symbolic AI, particularly expert systems, were used. Not so much now. I still use it. If you know it you can be much more expressive and productive in it than in other mainstream languages, and when there's something you need that's missing from Lisp, you can extend Lisp to include it. There are reasons it's fallen from favour, some of which lisper has given here. It's a mistake to languages necessarily succeed or fail on their merits.
- flavio81 9y ago>I would like to know if any HN'ers would provide me some insight into why Lisp is so popular? In the late early 80s it was rather popular but it required expensive specialized hardware and software. Or you could execute it on more common hardware, but memory requirements were pretty high, which adds to the expense. It's not like in 2017 where you can have many excellent Lisp implementations for free and they run blazingly fast on your machine, without needing more memory than what you have already. It also has something to do with the triumph of UNIX over the Lisp machines
- rurban 9y agoSo this looks like basically the followup project to the TAOS os which was ways ahead of its time. https://news.ycombinator.com/item?id=9806607 https://news.ycombinator.com/item?id=9806607
- autcrock 9y agoWhat this reminded me of most is the Connection Machines, which allowed you to configure the interprocessor connection topology. It had specialised C, FORTRAN and Lisp languages. They were also the best looking computers I ever saw!