Seamless is a framework to set up reproducible computations (and visualizations) that respond to changes in cells. Cells contain the input data as well as the source code of the computations, and all cells can be edited interactively.
Right now, the only resource that is really internal to Seamless is "ncores" (see "multi-core-transformations" test). "memory" should be added as well:
Use bytes2human to parse the user specification
Add it to Seamless itself with a lock mechanism. Something like: wait until enough memory is available, then acquire the global memory allocation lock, then decrease (allocate, claim) the available memory; then release the memory allocation lock. Have a concept of max memory, fail if that is insufficient. Also, for nesting, implement knowledge of the memory claimed by the parent process (unlike cores, don't release it when calling a child)
Add it to the mini and mini-dask assistant
Optional: add it to Dask as a Dask resource. Rather dangerous (may sliently hang) until my Dask patch has been created and accepted.
Right now, the only resource that is really internal to Seamless is "ncores" (see "multi-core-transformations" test). "memory" should be added as well: