Releases: NumstoreDB/Numstore
v1.1.3
v1.1.3: A drive for Open Source Friendliness / Simplicity and Documentation
No new features in this release - but a major push towards open source friendliness.
Modules were simplified to help developers navigate and understand the code. This includes a couple of major changes:
- 1 Library - originally, there were 4 libraries, now it's just numstore. There really was no need to have multiple libraries and it was mostly a development tool to isolate visibility. As numstore matures, and stables out, it's much more straight forward to keep one simple library to help people navigate the code better
- Better (ongoing) documentation - A proper documentation and commenting format was adopted for numstore. Docs now follow Doxygen format - with headers and function comments. This is a work in progress
This was a necessary step to drive the open source adaptability of Numstore to make it easier for developers to onboard quickly.
Full Changelog: https://github.com/lincketheo/Numstore/compare/v1.1.2...v1.1.3
v1.1.2
Changed
- Broke libraries into components:
- c_specx: In charge of core common code
- smartfiles: A filesystem in a file
- nscore: Core numstore algorithms
- numstore: smartfiles with a type system built in
- Unit tests are now auto generated using python to remove the
dependency on any type of constructor attributes to maintain
portability - Renames PAGE_SIZE to NS_PAGE_SIZE because some x86_64 compilers
reserve PAGE_SIZE in limits.h
Removed
- submodule dependency on c_specx (added as its own dedicated library)
Added
- pynumstore - A Python binding for numstore written in CPython
- numstore - a typed smartfiles - which constricts the variables to typed values
prim- A primitive typestruct- A Product typeunion- A Summation typesarray- A strict array type
- Compilers for all new types
type_ref- A compound type_accessor to create a new typetype_accessor- A typed version of byte_accessorsubtype- Sub type of an existing type
- Code coverage ci/cd target to test code coverage on unit tests
- Swarm tests - for irwr (insert read write remove) and cgd (create get delete)
- A bunch of new ci / cd tools:
- Builds numstore on a bunch of different architectures
- Runs tests
- Runs cibuildwheel
- Publishes to pypi on releases
- Code coverage job that uploads to codecov
Full Changelog: https://github.com/lincketheo/Numstore/compare/v1.1.0...v1.1.2
v1.0.0
Changed
- Files are now not suffixed by ".db" - they are exactly as you specify in open
Full Changelog: v0.0.3...v1.0.0
v0.0.3
Added
smfile_open/smfile_close— open and close a smart file in read/write modesmfile_cleanup— release all on-disk resources associated with a file pathsmfile_new_context— create an independent transaction context from an existing smart filesmfile_strerror/smfile_perror— error introspection in the style of the C standard library
Simple API — treats the file as a flat byte sequence:
smfile_size— query total file size in bytessmfile_read— read elements from a byte offsetsmfile_write— overwrite elements at a byte offset (atomic)smfile_insert— insert bytes into the middle of a filesmfile_remove— remove elements and close the gap (atomic, with optional capture)smfile_delete— delete a named variable
Power API — named variables and strided element access:
smfile_psize— query the size of a named variablesmfile_pread— strided read from a named variablesmfile_pwrite— strided write into a named variablesmfile_pinsert— insert into a named variable at a byte offsetsmfile_premove— strided remove from a named variable (atomic, with optional capture)
Transactions — WAL-backed, two-phase locking:
smfile_begin— begin an explicit transactionsmfile_commit— commit all operations as a single atomic unitsmfile_rollback— undo all mutations since the lastsmfile_begin
Notes
- All simple and power operations are individually atomic by default
- Explicit transactions promote a sequence of operations to a single atomic unit
- Negative byte offsets are interpreted relative to end of file
- Explicit-width types used throughout for deterministic on-disk layout
Full Changelog: v0.0.2...v0.0.3
v0.0.2
Full Changelog: v0.0.1-prerelease...v0.0.2
Full Changelog: v0.0.1-prerelease...v0.0.2
Full Changelog: v0.0.1-prerelease...v0.0.2