-
Notifications
You must be signed in to change notification settings - Fork 103
Wild Ideas
These are some crazy ideas for enhancing or possibly improving parts of CCL.
The GC is a stop-the-world, single-threaded affair. There are more advanced GC techniques that could be investigated (concurrency, multiple threads and so on).
The current GC can run at any instruction boundary; in other words, every instruction boundary is a GC safepoint. This requires great care. We could consider going back to a strategy where we check whether a GC is needed (e.g., at loop heads and function calls). This would presumably let us avoid the complicated pc-lusering that we have to do when suspending a thread asynchronously. As an extra benefit, it might make dealing with workqueue threads (which ignore signals, and are a part of Darwin's Grand Central Dispatch) more tractable.
Might it be possible to reorganize CCL so that it could be linked into other software as a shared library? This seems like it would probably be quite difficult.
Bignums, even on 64-bit ports, use a 32-bit bignum digits. This enables quite a bit of bignum arithmetic to be written in Lisp rather than assembly. It might be worth it, speed-wise, to re-implement this using 64-bit bignum digits.
The PowerPC port implemented a sub-O(n²) bignum multiplication algorithm (namely the Karatsuba algorithm) that pays off for sufficiently long bignums. Adding this to other ports might be worthwhile or at least fun.
Built-in SSL streams.
Fast, built-in SHA-256.