4 ms·
Symbolics added an Ephemeral GC in 1985. It keeps a bitmap of modified memory pages with ephemeral objects in RAM. The Ephemeral GC then looked only at those pa
by lispm 11y ago
Symbolics added an Ephemeral GC in 1985. It keeps a bitmap of modified memory pages with ephemeral objects in RAM. The Ephemeral GC then looked only at those pages.
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.125.2438 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.125....
Macintosh Common Lisp later used a similar scheme on 68k machines with MMU.
- nickpsecurity 11y agoThanks for the link. This jumped out at me: "The importance of designing the architecture and the hardware to facilitate garbage collection is stressed." Replace GC with reliability, security, concurrency, and so on it's still true. It's why I advocated safe, high-level languages and RISC processors. I figured they'd be easier to modify at compiler or hardware level as people invented solutions to these problems. Doing the same on x86, Windows, and C++? I almost gave up...
- pjmlp 11y agoIn the mid-90's while at the university I got to learn about Oberon and eventually had the Native Oberon running on my PC. It opened my mind about using GC enabled systems programming languages. Eventually I became an Oberon addict and also Modula-3 one, as a side effect of discovering a book about it gathering dust in a technical library. OS vendors just need to care the same way as they do with improving JavaScript JIT compilers, for example.
- nickpsecurity 11y agoYeah it was pretty nice. The SPIN OS team wrote a whole OS in Modula-3 that supported safe, dynamic linking of code into the kernel for performance boosts. A recent discussion here showed that the Go language was partly an attempt to re-create one of its author's experience coding in Oberon. The combination of systems programming, safety, and productivity disappeared when he switched to C. Far as JS, that would help but it's a good example of why it won't. There were many attempts, like Juice [1], to replace JavaScript in the browsers with something better. There were also attempts to solve the problems at OS-level that Web solved. All of them ignored it to the point that we eventually got stuck with JavaScript & browsers being only thing that's on all devices with presentation & computation layer. So, while still ignoring better options, they continued to improve the speed of JavaScript engines and their new JIT schemes. So, the OS's could certainly benefit from the kind of activity that led to JavaScript JIT performance. However, their existence says more in the other direction. [1] http://www.modulaware.com/mdlt69.htm http://www.modulaware.com/mdlt69.htm
- pjmlp 11y agoYeah sure, I just wanted to make the point that some technologies can be improved if the companies that matter in the IT world, bother to put money into it. Somehow I like to think that Android, WinRT/.NET Native, Swift's introduction, Mirage OS are all little steps into that direction.
- nickpsecurity 11y agoCertainly they could be improved. Swift and MirageOS are great examples. IBM's mainframes and AS/400 line are good examples given they adapted them to most useful, popular technologies + still backward compatible. Remember, though, that backward compatibility constrains the biggest and oldest systems in ways that prevent architectural improvements. All the biggest companies lining Microsoft, Oracle, and SAP's pockets would have to throw away their apps that they can't even rebuild. Not happening. So, our best bet is that small to midsized firms with more flexibility keep adopting these technologies. That's fuels investment into them to get them eventually at a level like Microsoft and Oracle. That enterprises have switched to service model helps in that they keep some services on old tech but implement some on newer, better stuff (ex Python at BofA). So, these trends are what we have to bank on. One thing, though: better get it right the first time as your newer, better tech will eventually be a legacy tech someone else is maintaining. It's why I focus on readability, interfaces, and type safety for maintenance concerns a lot more now in tech.