Sam Gammon
12/20/2022, 11:09 AMSam Gammon
12/20/2022, 11:09 AMSam Gammon
12/20/2022, 11:10 AMSam Gammon
12/20/2022, 11:10 AMSam Gammon
12/21/2022, 10:42 AMSam Gammon
12/21/2022, 10:42 AMcurl -sSL <https://dl.elide.dev/cli/v1/snapshot/install.sh> | bash
Sam Gammon
12/27/2022, 10:45 AMSam Gammon
12/27/2022, 10:46 AMSam Gammon
12/30/2022, 8:38 AMSam Gammon
12/30/2022, 8:45 AMnpx run @elide-dev/elide@alpha
Sam Gammon
01/01/2023, 2:49 AMSam Gammon
01/01/2023, 8:46 AMSam Gammon
01/02/2023, 1:52 AMSam Gammon
01/02/2023, 1:53 AMSam Gammon
01/02/2023, 1:53 AMSam Gammon
01/02/2023, 1:53 AMSam Gammon
01/02/2023, 2:03 AMcrc32
and compression
mode
c. seek to beginning of Tree
flatbuffer, load it into memory while decompressing, according to compression
d. the Tree
has the file tree and byte offsets for each file, which we have on hand now
e. we load the data region as a RandomAccessFile
, perhaps written to tmp
f. the Tree
and data region are used to build an in-memory JimFS filesystem, decompressing while we go
g. at runtime, guest requests file via I/O:
i. impl receives request, enforces security policies
ii. allowed requests go to JimFS
iii. JimFS serves it from memory in already-decompressed form
tradeoff decisions proposed:
• Init instead of runtime: load and decompress up-front so that file loading at runtime is instant, it's all already in memory
• Emphasis on fast decompression: LZ4 won't save a ton of space, but it will also minimize impact on startup time to the greatest extent possible
• Non-goal of pre-compressed browser assets: The assets subsystem already pre-compresses assets at build time, so it's a moot issue
• Backed by well-tested code: After boot, JimFS kicks in which is well tested and performant (we don't have to deliver crazy runtime performance)
• Streaming and copy-free: As much as possible, we shouldn't have to copy while initializing the runtime, which Flatbuffers and streaming compression deliver
(for reference, this is the guest FS that will be used to load ESM, NPM, Python modules, etc).Sam Gammon
01/02/2023, 2:03 AMSam Gammon
01/02/2023, 2:05 AMRandomAccessFile
and a compressed flatbuffer
• implementation that proxies to pure mmap or something, idkSam Gammon
01/02/2023, 9:24 PMSam Gammon
01/02/2023, 9:24 PMSam Gammon
01/10/2023, 1:48 AMSam Gammon
01/10/2023, 1:48 AMSam Gammon
01/10/2023, 1:49 AMrequire
as well.Sam Gammon
01/12/2023, 4:33 AMSam Gammon
01/12/2023, 7:05 PMSam Gammon
01/12/2023, 7:05 PMSam Gammon
01/15/2023, 10:34 AMv3
repo will be renamed to "elide" (the previous "elide" repo has been archived, it was v1/v2, which are now old)
• github discussions will get activated
• gitter and a button for this slack channel added to README
separately, a test version of the CLI is out which has the error support shown above, plus a bunch of other goodies under testing. release coming soon. you can try it by running the one-line installer:
curl -sSL --tlsv1.2 dl.elide.dev/cli/install.sh | bash -s -
Sam Gammon
01/25/2023, 7:34 PMSam Gammon
01/28/2023, 3:09 AMSam Gammon
01/28/2023, 3:09 AM