14 ms·
Common Lisp implementation of the Forth 2012 Standard
- mepian 2y agoThe author is also one of the developers of the Symbolics Virtual Lisp Machine used in Open (and now Portable) Genera: http://pt.withington.org/publications/VLM.html http://pt.withington.org/publications/VLM.html
- amszmidt 2y agoOpen in the "closed" sense. The legal status of anything from Symbolics is a minefield. Even this "portable Genera" might be of dubious legality... "Open" here was a popular term back in the day and bunch of companies used it .. sorta like AI, LLM, and blockchain.
- hayley-patton 2y ago"We changed the name to OTP." "Three of the trendiest names we could think of. Open. Telecom. Platform." https://www.youtube.com/watch?v=rRbY3TMUcgQ https://www.youtube.com/watch?v=rRbY3TMUcgQ
- Y_Y 2y agoI'm sure if they weren't incentivised by the certainty of creating a legal minefield in the future then this technology would never have been created and we'd be sitting at home banging sticks together.
- amszmidt 2y agoMost of this ”technology” was created at the MIT AI Labs, Genera did a few cool things but in the grand scheme of things it is essentially not much (the Dynamic Listener probably being the most interesting thing, the rest of the system was essentially the same). The MIT version of the Lisp Machine is free software without any legal conundrums. So there you go …
- lispm 2y ago> rest of the system was essentially the same not true
- amszmidt 2y agoVery true, try doing a M-x Source Compare. Genera is backwards compatible with System 99. And any differences are trivial.
- lispm 2y agoI'm looking at a Symbolics file system. Where do I find Dynamic Windows in System 99? Common Lisp? CLOS? The Document Examiner? X11? NFS?
- amszmidt 2y agoNobody was saying that Genera didn't do anything novel, Dynamic Windows being one, and the Dynamic Listner being another. Overall, the guts are essentially the same, ZMacs, Zmail (also not part of the base System), Flavors, and anything else in the base layer -- to the point that you can compare all of the files that get stuffed into the cold load image without much effort. System 99 has support for Common Lisp. System 301 will hopefully have better support than Genera (seeing that it doesn't really support CL very well anyway) at that. The Document Examiner is a separate system (and LMI did it differently, with Gateway), and not part of the base System. X11, and NFS likewise. So listing a bunch of orthogonal systems isn't really what was being discussed.
- lispm 2y agoThe core Symbolics SYSTEM system I see here is version 501.51. It consists of a bunch of other systems like SI, Embedding, L-Bin, Tables, Scheduler, Netboot, Common Lisp, SCT, Garbage Collector, Flavor, Error System, Language Tools, Network, Lisp Compiler, Bitblt, Fonts, FS, Bin, Time, TV, Presentation Substrate, CP, Dynamic Windows, Debugger, I Linker, Fep-FS, ... I don't see much of that in System 99 from MIT. Stuff like X11 and NFS is also not random stuff. Open Genera uses it for its console and its files. > seeing that it doesn't really support CL very well anyway Well enough that it is able to run a lot of its software written in Common Lisp. It's able to run stuff like PCL, ASDF, ITERATE, ... System 99 is from 1984 (?), Symbolics started in 81/82. Open Genera appeared 1992/93. You are ignoring a full decade of development. Earlier: > Genera did a few cool things but in the grand scheme of things it is essentially not much (the Dynamic Listener probably being the most interesting thing, the rest of the system was essentially the same). I would guess that less than 20% of the core SYSTEM is essentially the same (but often quite a bit enhanced). For the rest of the software, I would think it's even less. Which is not surprising, since System 99 did not support the 3600 systems, the G-Machines, the I-machines (XL400, XL1200, XL1201, UX400, UX1200, NXP1000, MacIvory 1/2/3, ...), Open Genera, ..., because all that was developed later by Symbolics.
- eschaton 2y agoThe Symbolics intellectual property wasn't a legal minefield until the past decade and change, where it was acquired from Andrew Topping's estate by a longtime MIT Lisp guy who has been a complete idiot for not opening it up to the world. However, he only actually owns it if Andrew Topping actually paid the Symbolics bankruptcy executor for it in full. (Not doing so would entirely fit Topping's character, based on his criminal rap sheet.) If Topping didn't fully pay for it, then it still belongs to whoever or whatever the successor of the Symbolics bankruptcy executor is; I think that was ABN AMRO. Good luck finding any of that out!
- Y_Y 2y agoAre you talking about John Mallory? I imagine someone has already tried to figure this out, but it's indeed not easy to find much online. It even appears there's ongoing development, but in some secretive fashion: https://hachyderm.io/@gmpalter/109553491209727096 https://hachyderm.io/@gmpalter/109553491209727096 (by the same dude who wrote TFA). Could anyone more knowledgeable provide firther direction?
- fsckboy 2y ago>"Open" here was a popular term back in the day and bunch of companies used it .. sorta like AI, LLM, and blockchain. nah. what you are describing is Open in the present day, like OpenAI. back in the day it meant "open standards, allowing cooperation between secretive competitors". IBM and Digital could both implement to an open standard instead of their traditional proprietary so their devices would interoperate. This type of openness is what Microsoft liked to "embrace, extend, extinguish", meaning "we'll get kudos joining the interoperating consortium, we'll look cutting edge by adding features which would make us not actually interoperate but are useful so people will adopt them, then we will have killed off this threat to our monopoly" in that same period of time, open source started to be called that because what was open was the source.
- anthk 2y agoBack in the day there was ITS, Maclisp and Emacs on top of TECO.
- lispm 2y agoThat was gone at a time when Lisp Machines were commercialized (81/82). Emacs there was called Zmacs and was written in Lisp. Maclisp was replaced by Lisp Machine Lisp / ZetaLisp / Common Lisp. UNIX was then a thing. Open Genera in the early 90s then ran on OSF/1 UNIX (https://en.wikipedia.org/wiki/OSF/1 https://en.wikipedia.org/wiki/OSF/1 , renamed to Digital UNIX) on DEC Alpha. OSF meant Open Software Foundation ( https://en.wikipedia.org/wiki/Open_Software_Foundation https://en.wikipedia.org/wiki/Open_Software_Foundation ), a group propagating "open standards" for UNIX.
- anthk 2y agoCuriously, GNU was born in that era, to give the Unix users the freedom from ITS, Maclisp, Emacs and the rest of the projects from MIT. Instead of having slow-ish boot times in a Lisp machine, GNU's plan was to put several memory-protected concurrent interpreters under Unix, giving the user far more power by default with GNU/Hurd against a common Unix users. WIth namespaces, for instance, you could forget about suid and/or needing group perms to mount a device or access different media and soundcards.
- anthk 2y agoNot free. This is useless for preservation. Just compare it against Medley/Interlisp.
- kunley 2y agoI hope there will come time for Forth to get more attention, or dare I say, to stop being so underrated. It is so great tool, even just for stretching your brain cells..
- ink_13 2y agoToo bad I no longer have my HONK FORTH IF LOVE THEN bumper sticker
- colonwqbang 2y agoShouldn't it be "forth love if honk then"? Or am I not getting the joke.
- rlonstein 2y agoI remember it as, "YOU FORTH LOVE IF HONK THEN"
- Y_Y 2y agoThis link I found seems to corroborate http://www.drdobbs.com/blog/archives/2010/09/forth_love_if_h.html http://www.drdobbs.com/blog/archives/2010/09/forth_love_if_h... but the Wayback Machine is down so I can't check.
- fuzztester 2y agoAsk Don Hopkins: https://news.ycombinator.com/user?id=DonHopkins https://news.ycombinator.com/user?id=DonHopkins
- deleted 2y ago[deleted]
- ink_13 2y agoOn reflection I think you are correct. Admittedly I have not done anything with Forth in quite some time.
- 2y ago
- vdupras 2y agoThis is too much to bear and I had to create an account for this! Might I interest you in the opposite? Sort of a Lisp implemented in Forth that can compile Lisp functions to native code, all of this in less than 500 lines of Dusk code. https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/doc/comp/lisp.txt https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/doc/co... http://duskos.org/ http://duskos.org/
- sourcepluck 2y agoThanks for the excellent work you're doing! It's (extremely) high on my list of things-to-do if I ever get more time for learning and progressing my very rudimentary programming knowledge.
- wild_egg 2y agoThis is excellent as well. I don't really jive with the Collapsnik aspect but I absolutely love powerful systems that can run in constrained environments. Thanks for sharing, I'll be diving into this for a while
- kragen 2y agoCondolences on finally opening an HN account. I greatly appreciate your work even though I disagree with much of it. DuskOS in particular seems excellent. I hadn't looked at comp/lisp before. It definitely looks like a real Lisp to me. In https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/mem/cons.fs#L19 https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/mem/co... I see that you have dynamic typing, implemented in assembly, and from https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/mem/cons.fs#L25 https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/mem/co... to line 70 you have a garbage collector. From https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/comp/lisp/compile.fs#L100 https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/comp/l... I see you have closures, but I'm not sure how memory allocation for their captured variables works; from https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/comp/lisp/env.fs https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/comp/l... I infer that you are just using dynamic scoping, thus ruling out both upward funargs and tail-call elimination? What's the most interesting program you've written in comp/lisp?
- packetlost 2y agoVery interesting! For those who do not pay too much attention to Forth, the forth standard [0] still sees fairly regular updates. GForth, the implementation that I've spent the most time with, gets several commits per week, so it's not dead, though I suspect that it's a small handful of individuals who use it frequently that are keeping it alive and not widespread use. Forth is absolutely worth learning, if for no other reason than understanding how stack-based interpreters work. The CPython VM, as an example, behaves similar in some respects to the average Forth program. There's definitely better examples out there, but here[1] is an implementation of Mage the Awakening 2e's (tabletop game) spellcasting system in Forth that I wrote to help with playing awile ago. [0]: https://forth-standard.org/ https://forth-standard.org/ [1]: https://git.sr.ht/~chiefnoah/spellbook/tree https://git.sr.ht/~chiefnoah/spellbook/tree
- johnisgood 2y agoFactor is worth checking out, too, which is Lispy in some ways: https://github.com/factor/factor https://github.com/factor/factor
- 7thaccount 2y agoIt's also important to point out that a forth standard probably helps a few of the commercial vendors keep some level of interoperability, but in general, the hobbyist community (I would guess the bulk of forth users today) ignores the standard almost entirely and just implements their own forth (commonly a new one for each project). The old saying is "if you've seen one forth, then you've seen one forth". It isn't a language like Python, but more like a language philosophy. The creator of forth (chuck Moore) wasn't a fan of standards and felt they led to bloat. He was uniquely lucky and gifted to where he would figure out the minimum implementation of both hardware + software to solve a problem and by hardware...I mean he designed his own chips. So at the end of the day, he had a holistic tool where the hardware and software were designed together to solve a specific problem. He wouldn't implement anything he didn't need. It's a fascinating process that I would guess wouldn't work for 99.999% of people as most of us aren't at that level of knowledge/efficiency. Forth and Lisp are both super freaking cool.
- 2y ago
- pmarreck 2y ago“CL-Forth compiles with LispWorks but crashes running the Forth test suite.” wouldn’t this normally preclude doing any actual work with it?
- zulu-inuoe 2y agoYou can use CCL
- shawn_w 2y agoI wonder if they were testing with the paid, commercial version or the free evaluation version of LispWorks, which has significant restrictions. Most people playing around with this will be using sbcl though. It's overwhelmingly the most popular free common lisp system.
- armitron 2y agoNot to mention more perfomant than Lispworks.
- anthk 2y agoUse SBCL.
- kragen 2y agoIt sounds like it would preclude doing any actual work with LispWorks, yes. But maybe someone at Harlequin will take interest and fix whatever the LispWorks bug is, or in the unlikely case that it's a CL-Forth bug, propose a fix. (It could be a CL-Forth bug, because Common Lisp allows you to turn off safety.) It doesn't preclude doing any actual work with CL-Forth, though, because you can use better Common Lisps.
- crest 2y agoDoing it the other way around would be a lot more impressive. ;-)
- ofalkaed 2y agoThe use of CODE/;CODE/;ENCODE for defining words in lisp is great. I can see myself using this a good amount especially if I can get it playing well with Tk either through the FFI or lTk/nodgui.
- codr7 2y agoNot nearly as orthodox/fancy, but I spent quite some time playing Forth in Lisp: https://github.com/codr7/cl-scrl https://github.com/codr7/cl-scrl https://github.com/codr7/snabel https://github.com/codr7/snabel https://github.com/codr7/fipl https://github.com/codr7/fipl https://github.com/codr7/lila https://github.com/codr7/lila