Thanks everyone who came to the meeting. Here is a summary.
Attendees (8)
Ben Lippmeier, Matthew Yu, Chris Hall, Richard Collins, Rohan Jacob-Rao, Sean Seefried, Peter Gammie, Trevor McDonell
Sorry if I missed anyone.
Main Changes (since last meeting)
. DDC name changed to Disco Discus Compiler.
. Name changed because the current system is quite different from the original “Disciple” language described in Ben’s thesis, and Discus fish make a better logo. Disco is the name of the fish (mascot), and partly recalls the quote by SPJ from the paper "Tackling the Awkward Squad”: “In the programming-language world, one rule of survival is simple: dance or die.”
. We now have a new homepage based on the sphinx docs in the main repo.
. Interface files are now stored in binary format via provided by the Shimmer project which has been split into a separate repo. Faster serialisation / deserialisation of interface files improved compile performance by about 30%. Next step is to add an index to the files to avoid deserialising the whole lot when only a few declarations are imported.
. Changed runtime object format to use a uniform 64-bit header for objects, and gave up on maintaining the old 32-bit runtime for now.
. Added try/catch style exception mechanism that allows writing bigger programs more cleanly, though typing is still naive using a non-maskable ‘Error’ effect.
. Added floating point primitives so we can write real numeric programs like ray tracers etc (demo in the repo)
. Added global# primitive to Salt language that allows new global runtime system variables to be defined easily.
. Added more library support, specifically basic file handling and a JSON parser. Doing this forced out some bugs in compilation of pattern matching.
Main Holes
. Compile time performance is still poor due to need to deserialise all interface files for transitively imported modules. This is being addressed as part of the memoization project (described below)
. Use of a single global namespace is a headache. The base library is starting to become large enough that new declarations are likely to clash with existing ones, which is hard to keep track of manually.
Active Projects
Chris: Adding a capability system to ensure that concurrent effectful computations do not interfere.
Matthew: Adding support for a version of compact regions, which allows data to be allocated into a region separate from the heap and not traced during main GC cycles. Doing this should reducing pause times and improving cache locality for access to data in the compact region.
Ben + Trevor: Adding a reflection and memoization system so that results of computations can be stored between runs of a program. Work on this will also contribute to reducing compile times, as we can use the same indexed file format for interface files as we use to store memoized values.
Decisions
. We’ll move to having meetings every 3 months while there are multiple active local projects. Next meeting would be in July, perhaps July 10th though this will be confirmed closer to the date.
Cheers,
Ben.