TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Symbolics Genera - The Best Software Environment Available

51 pointsby udzinariover 14 years ago

5 comments

ScottBursonover 14 years ago
I have a Symbolics XL1200 that still works (at least, it worked the last time I turned it on, which was a few years ago). I'd be happy to demo it at YC sometime.<p>It was a fun environment to work in. Although the hardware was very slow by modern standards, the environment was designed to maximize hacker productivity. For example, you didn't have to run a program under the debugger to debug it -- the debugger was always there. Any program that hit an error would drop you into the debugger. One keystroke would then take you to the source for the current function. You could change that function, recompile it, and restart from the point where the function was called.<p>The environment was completely open; there was no access control of any kind. There was also only a single address space. Did that make it crash-prone? Remarkably, no. The hardware tagging and bounds checking kept programs from stepping on objects they didn't own. Of course such a design would never survive outside of a research lab, but it made it amazingly easy to hack almost anything in the system.
评论 #1878596 未加载
评论 #1878619 未加载
julian37over 14 years ago
Wikipedia has more information for people (like me) who haven't heard of Genera before: <a href="http://en.wikipedia.org/wiki/Genera_(operating_system)" rel="nofollow">http://en.wikipedia.org/wiki/Genera_(operating_system)</a>
sedachvover 14 years ago
Lisp Machines are something that you think is really cool when you first learn about them, then you come to the realization that pining for them is a waste of time.<p>I've had a flash of inspiration recently and have been thinking about Lisp Machines a lot in the past three weeks.<p>But first, a digression. There's an important lesson to be learned about why Symbolics failed. I think Richard Gabriel came to the completely wrong conclusion with "Worse is Better" (<a href="http://www.dreamsongs.com/WorseIsBetter.html" rel="nofollow">http://www.dreamsongs.com/WorseIsBetter.html</a>). There are two reasons why:<p>1. Out of all the LispM-era Lisp hackers, only RMS understood the value of what's now known as Free Software. (If you haven't read it yet, read Steven Levy's Hackers - it describes the MIT/LMI/Symbolics split and how RMS came to start FSF and GNU).<p>2. Portability is really important.<p>The key lesson to draw from Unix isn't that "Worse is Better," it's that survivable software is Free and portable. Free because getting software to someone's harddrive is 80% of success, and portable because you don't know where people will want to use your software (there are some really weird places).<p>Symbolics was neither. If Genera had been Free Software, it would by definition still be around today. If Genera had been portable, it's likely Symbolics would never have gone out of business (the Alpha virtual machine would have been done sooner, with less resources, and for more systems).<p>Being released as Free Software today wouldn't help. Genera's predecessor, MIT CADR, was made available under an MIT-style license in 2004 (<a href="http://www.heeltoe.com/retro/mit/mit_cadr_lmss.html" rel="nofollow">http://www.heeltoe.com/retro/mit/mit_cadr_lmss.html</a>). There's a VM emulator which runs the code. The whole system is pretty useless.<p><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><p>Now on to the inspiration part:<p>It's possible to make a very high-performance, portable Lisp operating system on modern hardware. This has been a possibility ever since the Pentium came out. The main bottleneck to conventional Lisp runtime performance is the way operating systems manage memory allocation and virtual memory.<p>A type-safe runtime that has control over memory layout, virtual memory, and is aware of DMA can provide extremely high throughput for allocation and GC (this has been shown by Azure's Linux patches for their JVM), true zero-copy I/O, almost optimal levels of fragmentation, and excellent locality properties. If you go single address space (and there's no reason not to) and move paging into software (object faulting and specialized array access), you've also eliminated TLB misses.<p>Throw in the fact that it now becomes trivial to do exokernel-type stuff like for example caching pre-formatted IP packets, and it should be possible to build network servers that have throughput many times that of anything that kernel/user-space split OSes like Linux or FreeBSD are capable of for dynamic content (ie - not just issuing DMA requests from one device to another).<p>The only problem is device drivers. Lisp doesn't make writing device drivers any more fun, or reduce the number of devices you have to support.<p>What to do?<p>The reason I've been thinking about this is that I came across this: <a href="http://www.cliki.net/Zeta-C" rel="nofollow">http://www.cliki.net/Zeta-C</a><p>I've heard of Zeta-C multiple times before, but for some reason this time I made the connection - "why not use Zeta-C to compile an OS kernel?"<p>I explored the idea further, and it seems to me that it wouldn't be an unreasonable amount of work to take the NetBSD device subsystem and have it running on top of a Lisp runtime with the necessary emulation of those parts of the NetBSD kernel that the drivers depend on. If you don't know, NetBSD's device drivers are modular - they're written on top of bus abstraction layers, which are written on top of other abstraction layers (for example, memory-mapped vs port I/O is abstracted). So the actual system twiddling bits can be neatly encapsulated (which isn't necessarily true for Linux drivers, for example).<p>I'm aware of Movitz (<a href="http://common-lisp.net/project/movitz/" rel="nofollow">http://common-lisp.net/project/movitz/</a>) and LoperOS (<a href="http://www.loper-os.org/" rel="nofollow">http://www.loper-os.org/</a>). Movitz makes the mistake of trying not to be portable, but there's useful things there. I haven't spoken to Slava about this yet so I don't know what's going on with LoperOS. I am also aware of TUNES, and think it was an interesting waste of time.<p>The main thing is to get Zeta-C to work on Common Lisp. Then it's to build a new portable, boot-strappable runtime (I think the Portable Standard Lisp approach of having a SYSLISP layered on top of VOPs is the right way to go for this), and either build a compiler targeting that runtime, or adapt the IR-generating parts of one of SBCL, CMUCL or Clozure. Further bootstrapping can be done with SWANK and X11 once a basic networking stack is in place. I think such a system would be quite fun to hack on.<p>If you've gotten this far, let me know what you think about this idea. I also have some preliminary thoughts about how this can be worked into the base of a new high-performance/scalability transactional database startup, if you want to hear about that email me: vsedach@gmail.com
评论 #1878645 未加载
评论 #1879643 未加载
评论 #1878846 未加载
cagefaceover 14 years ago
There is no such thing as the "best" software environment, anymore than there is the best car. It all depends on what you're trying to do and what your priorities and constraints are.
评论 #1879083 未加载
评论 #1879162 未加载
rwmjover 14 years ago
That page is giving a 403 error now. What am I missing?