Release Notes

1.0 Alpha 22

February 23, 2020

This release cleans out code around configuration loading, as well as the instantiation of LDP entities and parameters passed to constructors.

New Features

  • The Python and REST APIs now may return inbound triples for LDP-NR metadata.

Enhancements

  • WSGI configuration is not read unless a WSGI server is actually started.

Warnings

  • lakesuperior.env_setup has been marked as deprecated. It will be removed in a future version (before beta anyway). New Python clients should replace:

    import lakesuperior.ewnv_setup
    

    with:

    from lakesuperior import env
    env.setup()
    

    See Usage for complete setup options.

1.0 Alpha 21 HOTFIX

April 09, 2019

Add missing __init.py__ file that left out a module in source distribution.

1.0 Alpha 20

April 08, 2019

After 6 months and almost 200 commits, this release completes a major effort to further move performance-critical sections of the code to C libraries.

The storage layer has been simplified by moving from 5-byte char* keys to size_t integers (8 bytes in most architectures). This means that this version requires a data migration from previous vresions.

Performance benchmarks have been updated with new results and charts.

1.0 Alpha 19 HOTFIX

October 10, 2018

A hotfix release was necessary to adjust settings for the source to build correctly on Read The Docs and Docker Hub, and to package correctly on PyPI.

1.0 Alpha 18

October 10, 2018

This release represents a major rewrite of many parts of the application, which took several months of research and refactoring. The main change is a much more efficient storage engine. The storage module and ancillary modules were completely rewritten in Cython to use the LMDB C API rather than the LMDB Python bindings [1]. Most of the stack was also modified to accommodate the new interface.

Most of the performance gains are visible in the Python API. Further optimizations would be more involved, including refactoring RDF serialization and deserialization libraries, and/or SPARQL language parsers. That may be done at the appropriate time.

Note that from this version on, Lakesuperior is distributed with C extensions (the Cython modules). This requires having a C compiler installed. Most Linux distributions come with gcc. The C sources generated by Cython are distributed with the package to avoid a dependency on Cython. They are very large files. Adopters and most contributors should not be concerned with these files.

New Features

  • New Python API objects ( SimpleGraph and Imr) for simple and resource-efficient handling of sets of triples.
  • New features in benchmark script:
    • Command line options that deprecate interactive input
    • Request/time graph plotting

Enhancements

  • New storage layer providing significant performance gains, especially in read operations. See Performance benchmark results.
  • Test coverage has increased (but is still not satisfactory).

Bug fixes

Several pre-existing bugs were resolved in the course of refactoring the code and writing tests for it:

  • faulty lookup method involving all-unbound triples
  • Triples clean-up after delete
  • Other minor bugs

Regressions

  • Removed ETags from LDP-RS resources. Read the Delta document for more explanation. This feature may be restored once clear specifications are laid out.
  • Increased size of the index file. This is a necessary price to pay for faster retrieval. The size is still quite small: see Performance for details.

Other Significant Changes

  • The fcrepo shell script, which launches the multi-threaded gunicorn web server, is now only available for Unix system. It would not work in Windows in previous versions anyways. Note that now this script is not in the $PATH environment variable of the virtualenv and must be invoked by its full path.
  • Main LDP-RS data and index are now in a single file. This simplifed the code significantly. The previous decision to have separate files was made for possible scenarios where the indices could be written asynchronously, but that will not be pursued in the foreseeable future because not corruption-proof.
  • Release notes are now in a self-standing document (this one) and are referred to in Github releases. This is part of a progressive effort to make the project more independent from vendor-specific features (unrelated from Github’s recent ownership change).

1.0 Alpha 17 HOTFIX

May 11, 2018

Hotfix resolving an issue with version files resulting in an error in the UI homepage.

1.0 Alpha 16

April 28, 2018

This release was triggered by accidentally merging a PR into master instead of devleopment, which caused CI to push the a16 release, whose name cannot be reused…

In any case, all tests pass and the PR actually brings in a new important feature, i.e. support for multiple RDF serialization formats, so might as well consider it a full release.

1.0 Alpha 15

April 27, 2018

Alpha 15 completes version handling and deletion & restore of resources, two key features for the beta track. It also addresses a regression issue with LDP-NR POSTs.

All clients are encouraged to upgrade to this last version which fixes a critical issue.

New Features

  • Complete bury, resurrect and forget resources
  • Complete reverting to version (#21)

Enhancements

  • Dramatic performance increase in GET fcr:versions (#20)
  • Refactor and simplify deletion-related code (#20)
  • Minimize number of triples copied on version creation
  • Complete removing SPARQL statements from model and store layout; remove redundant methods

Bug Fixes

  • LDP-NR POST returns 500 (#47)

Other Changes

  • Add PyPI package badge in README

Acknowledgments

Thanks to @acoburn for reporting and testing issues.

1.0 Alpha 14

April 23, 2018

Alpha 14 implements Term Search, one of the key features necessary to move toward a Beta release. Documentation about this new feature, which is available both in the UI and REST API, is at http://lakesuperior.readthedocs.io/en/latest/discovery.html#term-search and in the LAKEsuperior term search page itself.

This release also addresses issues with Direct and Indirect Containers, as well as several other server-side and client-side improvements. Client making use of LDP-DC and LDP-IC resources are encouraged to upgrade to this version.

New Features

  • Term search (#19)
  • Allow creating resources by providing a serialized RDF bytestring (#59)

Enhancements

  • Upgrade UI libraries to Bootstrap 4
  • Write tests for Direct and Indirect Containers (#22)

Bug Fixes

  • LDP-RS creation with POST and Turtle payload results in a LDP-NR (#56)
  • Cannot add children to direct containers (#57)

Acknowledgments

  • Thanks to @acoburn for reporting issues.

1.0 Alpha 13

April 14, 2018

Alpha 13 addressed a number of internal issues and restructured some core components, most notably configuration and globals handling.

New features

  • Report file for referential integrity check (#43)
  • Support PATCH operations on root node (#44)
  • Version number is now controlled by a single file
  • Version number added to home page

Enhancements

  • Better handling of thread-local and global variables
  • Prevent migration script from failing if an HTTP requests fails
  • Light LMDB store optimizations

Bug fixes

  • Removed extraneous characters from anchor link in output headers (#48)

Other changes

  • Added template for release notes (this document). This is not a feature supported by Github, but the template can be manually copied and pasted from .github/release_template.md.

Notes & caveats

  • Custom configurations may need to be adapted to the new configuration scheme. Please look at changes in lakesuperior/etc.defaults. Most notably, there is now a single data_dir location, and test.yml file is now deprecated.

Acknowledgments

Thanks to @acoburn for testing and reporting several isssues.

1.0 Alpha 12

April 7, 2018

Alpha 12 addresses some substantial enhancements to the Python API and code refactoring, additional documentation and integration.

Features

  • Integrate Travis with PyPI. Builds are now deployed to PyPI at every version upgrade.
  • Allow updating resources with triple deltas in Python API.

Enhancements

  • Streamlined resource creation logic, removed redundant methods.
  • Allow PUT with empty payload on existing resources.

Bug Fixes

  • Referential integrity did not parse fragment URIs correctly.

Other

  • Added documentation for discovery and query, and Python API usage examples.

1.0 Alpha 11

April 4, 2018

Alpha 11 introduces some minor documentation amendments and fixes an issue with the distribution package.

Features

None with this release.

Enhancements

  • Documentation improvements.

Bug Fixes

  • Issue with config files in wheel build.

1.0 Alpha 10

April 3, 2018

Alpha 10 introduces a completely revamped documentation and integration with setuptools to generate Python packages on PyPI. It incorporates the unreleased alpha9.

Features

  • Translate all documentation pages to .rst
  • Several new documentation pages
  • Translate all docstrings to .rst (#32)
  • Documentation now automatically generated by Sphinx
  • Setuptools integration to create Python wheels

Enhancements

  • Moved several files, including default config, into lakesuperior package
  • Reworked WSGI (gunicorn) server configuration, now exposed to user as .yml rather than .py
  • Made most scripts non-executable (executables are now generated by setuptools)
  • CI uses setup.py for testing
  • Web server no longer aborts if STOMP service is not accessible

Bug Fixes

None with this release.

Other

1.0 Alpha 8

March 26, 2018

Alpha 8 introduces a migration tool and other enhancements and bug fixes.

Features

  • Migration tool (#23)
  • Referential integrity checks (#31)

Enhancements

  • More efficient and cleaner handling of data keys (#17)
  • Enhanced resource view in UI
  • Simplified and more efficient PATCH operations
  • Zero configuration startup
  • More minor enhancements

Bug Fixes

  • STOMP protocol mismatch
  • Missing UID slash when POSTing to root (#26)
  • Running out of readers in long-running processes

Other

  • Travis and Docker integration

1.0 Alpha 7.1

March 9, 2018

1.0 Alpha 7

March 6, 2018

This is the first publicly advertised release of LAKEsuperior.

Some major features are missing and test coverage is very low but the application is proven to perform several basic operations on its own and with Hyrax 2.0.

1.0 Alpha 6

February 28, 2018

1.0 Alpha 5

February 14, 2018

1.0 Alpha 4

January 13, 2018

1.0 Alpha 3

January 9, 2018

1.0 Alpha 2

Dec 23, 2017

1.0 Alpha 1

Nov 24, 2017

[1]Nothing wrong with @dw’s excellent Python LMDB library; however, Lakesuperior performs heavy manipulation on data retrieved from the store which is more efficiently done in C/Cython.