No, it's not yet. Stay tuned.
These are some of the things planned before 1.0.0 release:
- Support saving to and reading from chests
- Support updating parts of chests
- Support watching (parts of) chests
- Properly handle multiple opens of the same Chest
- Revisit value access syntax
- Handle errors gracefully
- Write docs on how it works in principle
- Implement compaction
- Develop Brand & Logo
- Color palette
- Font
- Logo
- Use more efficient
TransferableTypedData - Support manually compacting chests
- Write docs on how to write tapers
- Document the tape format
- Document the file format
- Set up website
- Write docs on how to get started
- Support taper migration
- Add Flutter package
- Make encoding more efficient
- Support transactions
- Support storing references
- Support lazy chests?
- Code generation using tapegen
- Create tapers
- Make errors more beautiful
- Suggest tapers
- Add cycle detection
- during serialization
- during deserialization
- Write tapers for various common types
- dart:core
- dart:math
- dart:typed_data
- tuple
- Flutter
- Write docs on how to migrate tapers
- Write tests
- Add CI
- Benchmark
- Write performance suite
- Compare with other databases
- Hive & Lazy Hive
- Sembast
- SQLite
- Shared Preferences
- Create ChestTools, a web interface for debugging Chest databases
- Event stream
- Data
- See available chests
- See chests' contents
- See live updates of the content
- Edit content
- Performance
- Startup
- Decoding statistics
- How many decodings are made?
- How many updates occur?
- Storage
- File layout: Base data vs deltas
- Trigger manual compaction
- Insert events into the Dart Debugging Timeline
- Properly handle opening a chest in multiple isolates (blocked by dart-lang/sdk#44495)
- cross-Isolate adapter registry (blocked by dart-lang/sdk#44495)
Chest runs on all platforms where the DartVM runs. That's pretty much anywhere Dart runs except the browser.
Browser support is planned for the future though.
Chests are stored in files inside the directory specified by Chest.rootPath.
Usually, that's the directory from where your program is run.
Yes, it is. You need to register types before though.
Nope. Chest will detect them and throw an error. (TODO: It doesn't yet.)
Nope. Chest will detect that and throw an error.
Yes! Both chest instances will actually connect to the same backend. But you could just as easily make the chest global. Because the objects you get from a chest are not referenced by others, that's okay – Chest is similar to riverpod in that regard.
Sadly, no. Chest's architecture would actually support that – the file access and all other expensive operations happen on another isolate. But an isolate can't find another isolate without having some communication beforehand, so there's no way for both isolates to find and communicate with a shared backend.
If this is important to you, consider giving this issue an upvote. 👍
This won't work. Please don't try this.
No, you don't. If you don't, your program won't stop automatically though. So if you have a console application, the program will run infinitely long if you don't close the chest. If you're using Flutter, don't worry about closing chests.