3 ms·
There were proposals for mechanism for extending types from several of Wirth's students, and Franz - one of the co-authors of Juice - was one of the people who
by vidarh 3y ago
There were proposals for mechanism for extending types from several of Wirth's students, and Franz - one of the co-authors of Juice - was one of the people who around that time wrote a report on a proposal that'd enable runtime-loadable interface-based extension, so all of this would certainly be fixable.
Juice also flows naturally from Franz PhD thesis, which was on JIT compilation of Oberon from what in some sense was a compressed serialized reduced form of the AST instead of bytecode [I'll stress this is a gross oversimplification - his compiler does do more processing, so I guess what is serialized is closer to an IR in tree form than the AST]. I don't know how much that changed in Juice, as I've never looked at it much but from the description it remains at least similar in concept. I've wished more work had gone into that ever since I read his PhD thesis in '94.
- pjmlp 3y agoIt was used on Oberon System 3, and AOS. When compiling you had the option to generate proper native binaries, or slim ones to be JITed on load.
- vidarh 3y agoYeah, I'm aware it "stuck around" in the Oberon world, but it's very annoying it hasn't escaped that niche, and hasn't been iterated on more.
- abricq 3y ago> Franz was one of the people who around that time wrote a report on a proposal that'd enable runtime-loadable interface-based extension You seem to know a lot about this time. Would you have a reference on this report ? I am quite curious now !
- vidarh 3y agoOn a phone and without a reference handy but search for Franz and "Protocol Extension". It's a very short paper, and basically proposed a mechanism similar to vtables, but w/an extra level of indirection to allow whole interfaces to be slotted in, and to have subsequent loaded implementations addressed propagated down the class hierarchy on load. (I use a similar mechanism of propagating vtables updates down the class hierarchy, but without the extra indirection - at cost of more memory - in my prototype Ruby compiler)
- abricq 3y agoThank you, I got it: "Protocol extension, a technique for structuring large extensible software systems" [0] ! Hoping to find time to read it soon, and also to look at your ruby compiler ! [0]: https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/69200/eth-3297-01.pdf?sequence=1&isAllowed=y https://www.research-collection.ethz.ch/bitstream/handle/20....
- vidarh 3y agoMy Ruby compiler is, I'm sad to say, languishing. I got it to a stage where it does compile itself successfully (to 32 bit x86 assembly - 32 bit was still a reasonable choice when I started...), but it has plenty of bugs (and only compiles itself due to workarounds for those in the compiler source to avoid triggering them) and doesn't support most newer Ruby syntax, nor Regexp's or Float's (other massively limitations too). I keep telling myself I should at least fix the bugs at some point and strip out the workarounds, but so many other projects at the moment.