Skip to content

Latest commit

 

History

History
125 lines (101 loc) · 4.03 KB

File metadata and controls

125 lines (101 loc) · 4.03 KB

Frequently asked questions

Is Chest production-ready yet?

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)

Can Chest run on all platforms?

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.

Where are my chests stored?

Chests are stored in files inside the directory specified by Chest.rootPath. Usually, that's the directory from where your program is run.

Is Chest type-safe?

Yes, it is. You need to register types before though.

Can objects contain cycles?

Nope. Chest will detect them and throw an error. (TODO: It doesn't yet.)

Can I open the same chest twice?

Nope. Chest will detect that and throw an error.

Can I create the same chest twice and open both of them?

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.

Can I create and open the same chest on multiple isolates?

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. 👍

Can I open the same chest on multiple processes?

This won't work. Please don't try this.

Do I have to close the chests?

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.