Memoization documentation
theduke opened this issue · comments
Posting as an issue since I don't know how to reach the authors otherwise.
Skip is a very interesting language.
I scanned the docs but could not find any information about the feature giving the language its name: memoization.
EG:
- what are the cache semantics?
- does it employ some kind of LRU cache?
- what are the performance and memory implications to consider?
I'd be interested in how this works, is implemented, etc.
Also, since the language is a "now concluded research project", it would be very interesting to read about the conclusions of the project: how useful is the concept in practice, are there performance wins to be had in realistic workloads, etc.
Hey!
Thanks for the feedback.
I am planning to write something about our memory model soon. I agree with you that this part is missing in the docs.
The project has been "concluded" at Facebook, but it is well and alive outside of it. I plan to work on it and want to build a community in the open.
As for the performance, I would recommend you try using the skip_server. It's a good example of something that would be difficult to write in any other language. The skip_server loads a skip program and then listens to changes on disk to update the error messages in real time.
This way, you can work on a very large project (like the skip compiler itself) and still get your error messages in millisecs.
I plan to extend this to work on the entire compiler, but there is still work to do there ... But ultimately, the compiler should be entirely incremental, allowing you to iterate even on a large program very quickly.
I am also interested in the cache semantics! Are there any plan to write the docs?