github.com/lukechampine/jj (go): Package jj implements a JSON transaction journal. It enables efficient ACID transactions on JSON objects.  Each Journal represents a single JSON object. The object is serialized as an "initial object" followed by a series of update sets, one per line. Each update specifies a field and a modification. See the Update type for a full specification.  During operation, the object is first loaded by reading the file and applying each update to the initial object. It is subsequently modified by appending update sets to the file, one per line. At any time, a "checkpoint" may be created, which clears the Journal and starts over with a new initial object. This allows for compaction of the Journal file.  In the event of power failure or other serious disruption, the most recent update set may be only partially written. Partially written update sets are simply ignored when reading the Journal. Individual updates may also be ignored if they are malformed, though other updates in the set may be applied. See the Update docstring for an explanation of malformed updates.
Keywords: journaling|json