Releases: cayleygraph/cayley
v0.5.0 -- SQL, Labels, and Community
We've spun out of the google
namespace, so this is community build number one. There's some good chatter in IRC and places, and expect some notes in the mailing list soon. The project isn't dead, it was just resting.
Now that we can add contributors, it's time to tag and build a release as a baseline. There may be some turbulence as some longstanding changes get merged over the next version or two, so before we do that, here are some binaries for people to try out the latest.
Highlights:
- Postgres/SQL backend support
- Add support for LabelContext() to query the Label field across Quads
- SaveOptional()
- Many, many bugfixes
Full changelog:
barakmich: Add SaveOptional() to save predicates if they exist, and add the
dennwc: path: Added SaveOptional
dennwc: Fix interface conversion in Gremlin
barakmich: fix build on 1.6 -- more accurate interface conversion
josephschorr: Make call to `Sprintf` lazy
barakmich: query/gremlin, graph/path: Add support for querying with labels
Quentin-M: Fix NPE in SQL initialization
jzelinskie: dockerfile: fix go install command
jzelinskie: initial Dockerfile
barakmich: graph: make quadstore init functions idempotent
barakmich: Update README to mention Postgres and remove unused trello board
jzelinskie: add Triple function
Quentin-M: Fix SLOW DELETEs
Quentin-M: Fix a deadlock behavior with DELETE transactions
Quentin-M: Ensure that quads in a transaction are applied in the desired order.
Quentin-M: Use a Size() estimate for SQL Quadstore when noSizes is enabled.
barakmich: sql: Combine AND(Fixed, SQL) and fix Save() roundtrips
barakmich: graph/sql: Use an IN clause when optimizing a fixed iterator
barakmich: query/gremlin: fix building Or iterator, add test
barakmich: query/gremlin: Refactor in terms of graph/path
Quentin-M: Fix NPE in SQL Quadstore
Quentin-M: Improve Transaction: deduplicate quads, allow adding/removing a quad in the same tx
barakmich: Fix corners after causing a couple merges
ds--: Adds exporting capabilities
barakmich: Add migration tool and use protos in Bolt store
barakmich: graph: Postgres backend
sayden: Typo fix when building cayley from scratch
sayden: Order of parameters when using :a and :d are switched
Kavec: Refactor for readability
kortschak: graph/bolt: don't panic on unitialised store
barakmich: Fixes memstore transaction semantics
Quentin-M: Make the SQL connection fail-fast
Quentin-M: Fix NPEs in SQL Next and Contains
barakmich: Roll the Go version forward on Travis builds (new stable)
barakmich: Add check for multiple all iterators
kortschak: internal: move {config,db,http} into internal
skynet: Update README.md
neonstalwart: add string comparison to value comparison iterator
tmlbl: Small REPL Improvements
igm: Fixed multiplier for position of "label" in case of "po" key entry
cayleydb: Update README.md
barakmich: Docs update based on @KamiQuasi #280
lytics: Use new import path for go-uuid
jzelinskie: travis.yml: bump appengine dependency
barakmich: Add transaction (a list of deltas) as a primitive for applying sets o…
nii236: Widened visualisation box to 100%
panamafrancis: Added myself to the A+C
barakmich: Add Save and Has API functions
Quentin-M: Allow opening a database (bolt, leveldb, mongo) through Go API
barakmich: Clean up Linkage definition
allonhadaya: In out predicates
barakmich: Fix bug where first Bolt iteration ignores deletion
barakmich: Fix describe in Or iterator
neonstalwart: collapse 2 iterations into 1 in memstore
op: Fix nil pointer panic when meta bucket is missing
barakmich: Fix LevelDB deleted-triple iterator stack overflow bug
neonstalwart: move cmp to where it's used
kortschak: graph: remove redundant type
barakmich: Go API
heyalexej: update leveldb link and fix some https links in README
andrew-d: Refactor packages
andrew-d: Fix TravisCI tests
andrew-d: Remove deprecated ResultTree API
Dabaez: Update README.md
barakmich: Implement the Unique iterator
Mongo speedups, Loading fixes, Except/Not Operator
Point release, to get a number of speedups and fixes out to the binary distribution channel.
Roadmap for 0.5 includes a number of major open PRs.
Notable features:
- #236 Much faster Mongo support
- #180 No Mongo empty values
- #153 Gremlin Except() operator
- #184 Fix Google Appengine Support
- #235 Repeatable builds with Godep
Full changelist:
@jf87: added example n-quad file for gremlin api description
@barakmich: Mongo Indexed LinksTo
@jzelinskie: store dependencies' versions with godep
@barakmich: fix decompressing for http
@andrew-d: Add myself to AUTHORS + CONTRIBUTORS
@andrew-d: Add Err() and Close() methods to Iterators
@barakmich: Fix PrimaryKey Marshalling and add Bolt test
@alexwlchan: A couple of small spelling fixes in the docs
@barakmich: Rewrite keys into concrete types, remove key package
@barakmich: Clean up a little lint and some shadowed variables
@LAlbertalli: Add options to ignore duplicate or missing quad
@kortschak: Make query/... interfaces more idiomatic
@barakmich: bench: Add some grunty Not queries to the integration test (derived from...
@buley: Misspellings in Gremlin and Config docs
@mataevs: Except/Not Operator for Gremlin.
@barakmich: Minor doc fixes
@kortschak: Provide informative logging for dups/absences
@bkendall: Prevent empty values in cache (using mongo)
@kortschak: Make graph.Delta zero state invalid for use
@kortschak: Ensure callers get errors when they happen
@varadharajan: Allocate 82 bytes instead of 62 bytes in LevelDB's CreateKeyFor method
@bcleenders: Prevents repl panic, uses primary key generation for all writers
@panamafrancis: Implementation of the PrimaryKey type
@barakmich: mathutil is back in line
@barakmich: temporary travis fix
@kortschak: Fix leveldb change skew
@barakmich: Remove the news in the README, add Trello Link
@kortschak: Issue160
@kortschak: Don't retain results where the value is empty
@kortschak: Ensure we don't examine empty token
@kortschak: Replace DebugString with a well defined type returned by Describe
@kortschak: Delinting, deadcode removal and vetting
Bolt, Speedups and Fixes
Worth noting: you may have to reload your data in this version, as the database format has changed (hence the minor version bump). This is part of working with early software.
On the plus side, you'll notice quite a few benefits, including the new features.
For example, the memory benchmarks:
benchmark old ns/op new ns/op delta mult
BenchmarkNamePredicate 917680 1072457 +16.87% +1.17x
BenchmarkLargeSetsNoIntersection 176704664 48692651 -72.44% -3.63x
BenchmarkVeryLargeSetsSmallIntersection 32566448297 154770005 -99.52% -208.33x
BenchmarkHelplessContainsChecker 16041341849 40699233 -99.75% -400.00x
BenchmarkNetAndSpeed 71710442 16658337 -76.77% -4.30x
BenchmarkKeanuAndNet 13858313 12192151 -12.02% -1.14x
BenchmarkKeanuAndSpeed 16161303 15231229 -5.75% -1.06x
BenchmarkKeanuOther 3748121471 60429073 -98.39% -62.11x
BenchmarkKeanuBullockOther 300796920802 99996852 -99.97% -3333.33x
If you think those look good, they also get better with bigger backends. The big wins come from optimized iteration, which benefits all backends.
New in this release:
- Bolt backend for persistence
- Log-structure persistence
- Materialize iterator and related speedups
- Better memory backend (based on cznic/b)
- Better Gremlin session handling
- Underscore.js available in Gremlin
Shortlist of Bugfixes:
#9 Use boltdb in the backend
#70 Write-log and as_of_time and replication preparation
#93 Simplify the Nexter Interface
#107 127.0.0.1 by default
#106 #108 Use cquads in the web UI loader
#114 Materializer regression sparking odd results
#117 Data-race when handling many simultaneous queries
#125 Underscore.js available in Gremlin environment
#104 #129 Better REPL support (history, etc)
#141 Parser conformance for IRIRef
#145 Gremlin workers
Better Loading
New in this release:
- Loading straight from compressed files
- New, compilant NQuads parser (strict compliance variation compiled in, available in a future point release).
- Linux/ARM release included (tried with tiny graphs on Raspberry Pi, though it's slow on the SD)
Bugfixes:
#3: Printing empty fixed iterator
#21: Unexpected/incorrect MQL values
#72: NQuads silently drops lines with quotes
Initial Release
This is the initial binary release for Cayley, having now become go get
friendly. Current feature list from the README is:
- Written in Go
- RESTful API
- or a REPL if you prefer
- Built-in query editor and visualizer
- Multiple query languages:
- Plays well with multiple backend stores:
- Modular design; easy to extend with new languages and backends
- Decent test coverage
- Speed, where possible.
No changes, because initial release.