Releases: sneha-afk/KeplerKV
v.1.3.2
v1.3.1
Full Changelog: v1.3...v1.3.1
Bugs
- Error with
uint8_t, standard stuff?
Updates
- Updated documentation for the whole project. Might be put to rest for now.
v1.3
Full Changelog: v1.2...v1.3
changelog
- Transactions and Co. by @sneha-afk in #2
bug fixes
- Overcomplicated iterator pattern in
LexerandParserleads to some weird logic on where to increment and where not to. Standardized to be better withpeekandcurrto be easier.
v1.2
Full Changelog: v1.1...v1.2
changelog
Makefileand CMake configured to C++11 now,std::variantis no longer used and therefore does not need to be 17- Code cleanup in minor aspects
- Lowered heap usage (in some test cases by about ~4KB)
- Less string copying through const refs and other catches
bug fixes
- Lone quotation marks crashing, fixed in lexing
removeQuotations()producing incorrect outputs
v1.1
v1.0
version 1.0
Exciting, this will mark version 1.0 of KeplerKV! I'm proud of the codebase I've created thus far and hope to add more features to the project. Some of my aspirations are listed in the planning doc.
changelog
Full Changelog: v0.4.0-alpha...v1.0
- Added new commands for data manipulation:
INCRandDECRfor integer types,APPENDandPREPENDfor list types - Added a new
STATScommand with some basic statistics - Bug fix for
RESOLVE: not going down identifiers that reference lists (thus not detecting some circular references) - Revamped the layout of the manual doc
v0.4.0-alpha: Testing
Full Changelog: v0.3.0-alpha...v0.4.0-alpha
changelog
- Introduced testing through a system of simple input and output files: see the
testsdirectory - Easy to expand test input cases, just add the corresponding
_outfile to theoutputsdirectory - New command:
RENAMEfor renaming keys, confirms with user if an overwrite of an existing key is possible
v0.3.0-alpha : Save states
Full Changelog: v0.2.0-alpha...v0.3.0-alpha
changes
- Introduced saving and loading from
.kepfiles denoted as being a valid save file. - File saves currently in the same directory the executable is contained in
- New commands:
SAVE,LOAD,CLEARfor clearing the terminal screen - Extra: a
Makefileat the top of the repo
v0.2.0-alpha: recursive definitions
Full Changelog: v0.1.0-alpha...v0.2.0-alpha
changes
- Recursive keys are now supported, with the feature of catching circular references. Comprehensive coverage of this is covered in the manual
- New commands:
LIST,RESOLVE - Moved error messages to a header file, removed
static const std::runtime_errorand opted for macro strings instead - Bugs associated with multidimensional lists were fixed in the parser
- Program exits are handled through
main.cppwhen prompted byhandler.cpp
Baseline reached for KeplerKV
pre-release: v0.1.0-alpha
current features
The current form of the project has reached the baseline requirements I set to do.
- Basic user CLI setup for five basic commands: quit, set, get, delete, and update
- Volatile storage of some basic types: integers, floats, strings, and lists (including multi-dimensional)
- Validation of user input during parsing
challenges
By far the most difficult part of getting the project running was understanding the parsing. The tokenization of user input was straightforward, but I had to restructure the format of my abstract syntax nodes continuously as I stumbled across errors with recursive definitions (for lists) and overcomplexity in the evaluator stage when dealing with values. For now, I settled on a basic model where nodes are either commands or values for commands.
next steps
The next steps for the project include:
- Ideally, finding an easier definition for ValueNode and StoreValue that would reduce redundancy and added overhead
- Lazy evaluation of identifiers whose values are set to other identifiers
- Serialization so data can be non-volatile and persist