The Avail Programming Language

Mark's Avail Blog

File I/O is stable!

When I started working on the asynchronous file I/O operations, I figured a simple, state-of-the-art, efficient implementation would take a few days. I'd have to get the primitives written up in a particular way, while tweaking Avail's iterator hierarchy. Then I'd spend at most days or weeks to shake out correctness, performance, and usability problems with it. Not. Even. Close.

The biggest part by far was reworking iterators. I did a brief write-up about this in October. A little while after that, the cofounders and I had our first Avail retreat, where we managed to get away from life's distractions for a few days, holed up in beautiful Two Rivers, Wisconsin. While there, I managed to make some decent progress against writers (iterators through which one writes), and got most of the infrastructure in place to finish up with file writers (iterators through which one writes to files). It took until earlier this week to get file writing to pass some trivial tests, and today it finally passed a fairly extensive thrash-test. Now I consider file I/O ready to use.

There's not much written up about the internal buffering mechanisms, but I might get around to it some day; right now there's too much other work to do.

Potential next steps for me:

  • Finishing macros
  • Tool support: code editor, browser, debugger
  • Inlining non-primitives in L2

Wish me luck!

Return to Mark's Avail Blog