release_notes.rst 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. =============
  2. Release Notes
  3. =============
  4. 1.0 Alpha 22
  5. ------------
  6. *February 23, 2020*
  7. This release cleans out code around configuration loading, as well as the
  8. instantiation of LDP entities and parameters passed to constructors.
  9. New Features
  10. ~~~~~~~~~~~~
  11. - The Python and REST APIs now may return inbound triples for LDP-NR metadata.
  12. Enhancements
  13. ~~~~~~~~~~~~
  14. - WSGI configuration is not read unless a WSGI server is actually started.
  15. Warnings
  16. ~~~~~~~~
  17. - ``lakesuperior.env_setup`` has been marked as deprecated. It will be removed
  18. in a future version (before beta anyway). New Python clients should replace::
  19. import lakesuperior.ewnv_setup
  20. with::
  21. from lakesuperior import env
  22. env.setup()
  23. See :doc:`Usage <usage>` for complete setup options.
  24. 1.0 Alpha 21 HOTFIX
  25. -------------------
  26. *April 09, 2019*
  27. Add missing ``__init.py__`` file that left out a module in source distribution.
  28. 1.0 Alpha 20
  29. ------------
  30. *April 08, 2019*
  31. After 6 months and almost 200 commits, this release completes a major effort
  32. to further move performance-critical sections of the code to C libraries.
  33. The storage layer has been simplified by moving from 5-byte ``char*`` keys to
  34. ``size_t`` integers (8 bytes in most architectures). This means that this
  35. version requires a data migration from previous vresions.
  36. :doc:`Performance benchmarks <performance>` have been updated with new results
  37. and charts.
  38. 1.0 Alpha 19 HOTFIX
  39. -------------------
  40. *October 10, 2018*
  41. A hotfix release was necessary to adjust settings for the source to build
  42. correctly on Read The Docs and Docker Hub, and to package correctly on PyPI.
  43. 1.0 Alpha 18
  44. ------------
  45. *October 10, 2018*
  46. This release represents a major rewrite of many parts of the application, which
  47. took several months of research and refactoring. The main change is a much more
  48. efficient storage engine. The storage module and ancillary
  49. modules were completely rewritten in Cython to use the LMDB C API rather than
  50. the LMDB Python bindings [#]_. Most of the stack was also modified to
  51. accommodate the new interface.
  52. Most of the performance gains are visible in the Python API. Further
  53. optimizations would be more involved, including refactoring RDF serialization
  54. and deserialization libraries, and/or SPARQL language parsers. That may be done
  55. at the appropriate time.
  56. Note that from this version on, Lakesuperior is distributed with C extensions
  57. (the Cython modules). This requires having a C compiler installed. Most Linux
  58. distributions come with `gcc <https://www.gnu.org/software/gcc/>`__. The
  59. C sources generated by Cython are distributed with the package to avoid a
  60. dependency on Cython. They are very large files. Adopters and most contributors
  61. should not be concerned with these files.
  62. New Features
  63. ~~~~~~~~~~~~
  64. - New Python API objects (
  65. :py:class:`~lakesuperior.store.ldp_rs.lmdb_triplestore.SimpleGraph` and
  66. :py:class:`~lakesuperior.store.ldp_rs.lmdb_triplestore.Imr`) for simple and
  67. resource-efficient handling of sets of triples.
  68. - New features in benchmark script:
  69. + Command line options that deprecate interactive input
  70. + Request/time graph plotting
  71. Enhancements
  72. ~~~~~~~~~~~~
  73. - New storage layer providing significant performance gains, especially in read
  74. operations. See :doc:`Performance benchmark results <performance>`.
  75. - Test coverage has increased (but is still not satisfactory).
  76. Bug fixes
  77. ~~~~~~~~~
  78. Several pre-existing bugs were resolved in the course of refactoring the code
  79. and writing tests for it:
  80. - faulty lookup method involving all-unbound triples
  81. - Triples clean-up after delete
  82. - Other minor bugs
  83. Regressions
  84. ~~~~~~~~~~~
  85. - Removed ETags from LDP-RS resources. Read the
  86. :doc:`Delta document <fcrepo4_deltas>` for more explanation. This feature
  87. may be restored once clear specifications are laid out.
  88. - Increased size of the index file. This is a necessary price to pay for faster
  89. retrieval. The size is still quite small: see :doc:`Performance
  90. <performance>` for details.
  91. Other Significant Changes
  92. ~~~~~~~~~~~~~~~~~~~~~~~~~
  93. - The ``fcrepo`` shell script, which launches the multi-threaded gunicorn web
  94. server, is now only available for Unix system. It would not work in Windows
  95. in previous versions anyways. Note that now this script is not in the
  96. ``$PATH`` environment variable of the virtualenv and must be invoked by its
  97. full path.
  98. - Main LDP-RS data and index are now in a single file. This simplifed the code
  99. significantly. The previous decision to have separate files was made for
  100. possible scenarios where the indices could be written asynchronously, but
  101. that will not be pursued in the foreseeable future because not
  102. corruption-proof.
  103. - Release notes are now in a self-standing document (this one) and are referred
  104. to in Github releases. This is part of a progressive effort to make the
  105. project more independent from vendor-specific features (unrelated from
  106. Github's recent ownership change).
  107. 1.0 Alpha 17 HOTFIX
  108. -------------------
  109. *May 11, 2018*
  110. Hotfix resolving an issue with version files resulting in an error in the UI
  111. homepage.
  112. 1.0 Alpha 16
  113. ------------
  114. *April 28, 2018*
  115. This release was triggered by accidentally merging a PR into master instead of
  116. devleopment, which caused CI to push the a16 release, whose name cannot be
  117. reused...
  118. In any case, all tests pass and the PR actually brings in a new important
  119. feature, i.e. support for multiple RDF serialization formats, so might as well
  120. consider it a full release.
  121. 1.0 Alpha 15
  122. ------------
  123. *April 27, 2018*
  124. Alpha 15 completes version handling and deletion & restore of resources, two
  125. key features for the beta track. It also addresses a regression issue with
  126. LDP-NR POSTs.
  127. All clients are encouraged to upgrade to this last version which fixes a
  128. critical issue.
  129. New Features
  130. ~~~~~~~~~~~~
  131. - Complete bury, resurrect and forget resources
  132. - Complete reverting to version (#21)
  133. Enhancements
  134. ~~~~~~~~~~~~
  135. - Dramatic performance increase in GET fcr:versions (#20)
  136. - Refactor and simplify deletion-related code (#20)
  137. - Minimize number of triples copied on version creation
  138. - Complete removing SPARQL statements from model and store layout; remove
  139. redundant methods
  140. Bug Fixes
  141. ~~~~~~~~~
  142. - LDP-NR POST returns 500 (#47)
  143. Other Changes
  144. ~~~~~~~~~~~~~
  145. - Add PyPI package badge in README
  146. Acknowledgments
  147. ~~~~~~~~~~~~~~~
  148. Thanks to @acoburn for reporting and testing issues.
  149. 1.0 Alpha 14
  150. ------------
  151. *April 23, 2018*
  152. Alpha 14 implements Term Search, one of the key features necessary to move
  153. toward a Beta release. Documentation about this new feature, which is available
  154. both in the UI and REST API, is at
  155. `<http://lakesuperior.readthedocs.io/en/latest/discovery.html#term-search>`__
  156. and in the LAKEsuperior term search page itself.
  157. This release also addresses issues with Direct and Indirect Containers, as well
  158. as several other server-side and client-side improvements. Client making use of
  159. LDP-DC and LDP-IC resources are encouraged to upgrade to this version.
  160. New Features
  161. ~~~~~~~~~~~~
  162. - Term search (#19)
  163. - Allow creating resources by providing a serialized RDF bytestring (#59)
  164. Enhancements
  165. ~~~~~~~~~~~~
  166. - Upgrade UI libraries to Bootstrap 4
  167. - Write tests for Direct and Indirect Containers (#22)
  168. Bug Fixes
  169. ~~~~~~~~~
  170. - LDP-RS creation with POST and Turtle payload results in a LDP-NR (#56)
  171. - Cannot add children to direct containers (#57)
  172. Acknowledgments
  173. ~~~~~~~~~~~~~~~
  174. - Thanks to @acoburn for reporting issues.
  175. 1.0 Alpha 13
  176. ------------
  177. *April 14, 2018*
  178. Alpha 13 addressed a number of internal issues and restructured some core
  179. components, most notably configuration and globals handling.
  180. New features
  181. ~~~~~~~~~~~~
  182. - Report file for referential integrity check (#43)
  183. - Support PATCH operations on root node (#44)
  184. - Version number is now controlled by a single file
  185. - Version number added to home page
  186. Enhancements
  187. ~~~~~~~~~~~~
  188. - Better handling of thread-local and global variables
  189. - Prevent migration script from failing if an HTTP requests fails
  190. - Light LMDB store optimizations
  191. Bug fixes
  192. ~~~~~~~~~
  193. - Removed extraneous characters from ``anchor`` link in output headers (#48)
  194. Other changes
  195. ~~~~~~~~~~~~~
  196. - Added template for release notes (this document). This is not a feature
  197. supported by Github, but the template can be manually copied and pasted from
  198. ``.github/release_template.md``.
  199. Notes & caveats
  200. ~~~~~~~~~~~~~~~
  201. - Custom configurations may need to be adapted to the new configuration scheme.
  202. Please look at changes in ``lakesuperior/etc.defaults``. Most notably, there
  203. is now a single ``data_dir`` location, and ``test.yml`` file is now deprecated.
  204. Acknowledgments
  205. ~~~~~~~~~~~~~~~
  206. Thanks to @acoburn for testing and reporting several isssues.
  207. 1.0 Alpha 12
  208. ------------
  209. *April 7, 2018*
  210. Alpha 12 addresses some substantial enhancements to the Python API and code
  211. refactoring, additional documentation and integration.
  212. Features
  213. ~~~~~~~~
  214. - Integrate Travis with PyPI. Builds are now deployed to PyPI at every version
  215. upgrade.
  216. - Allow updating resources with triple deltas in Python API.
  217. Enhancements
  218. ~~~~~~~~~~~~
  219. - Streamlined resource creation logic, removed redundant methods.
  220. - Allow PUT with empty payload on existing resources.
  221. Bug Fixes
  222. ~~~~~~~~~
  223. - Referential integrity did not parse fragment URIs correctly.
  224. Other
  225. ~~~~~
  226. - Added documentation for discovery and query, and Python API usage examples.
  227. 1.0 Alpha 11
  228. ------------
  229. *April 4, 2018*
  230. Alpha 11 introduces some minor documentation amendments and fixes an issue
  231. with the distribution package.
  232. Features
  233. ~~~~~~~~
  234. None with this release.
  235. Enhancements
  236. ~~~~~~~~~~~~
  237. - Documentation improvements.
  238. Bug Fixes
  239. ~~~~~~~~~
  240. - Issue with config files in wheel build.
  241. 1.0 Alpha 10
  242. ------------
  243. *April 3, 2018*
  244. Alpha 10 introduces a completely revamped documentation and integration with
  245. setuptools to generate Python packages on PyPI. It incorporates the unreleased
  246. alpha9.
  247. Features
  248. ~~~~~~~~
  249. - Translate all documentation pages to .rst
  250. - Several new documentation pages
  251. - Translate all docstrings to .rst (#32)
  252. - Documentation now automatically generated by Sphinx
  253. - Setuptools integration to create Python wheels
  254. Enhancements
  255. ~~~~~~~~~~~~
  256. - Moved several files, including default config, into lakesuperior package
  257. - Reworked WSGI (gunicorn) server configuration, now exposed to user as .yml
  258. rather than .py
  259. - Made most scripts non-executable (executables are now generated by setuptools)
  260. - CI uses setup.py for testing
  261. - Web server no longer aborts if STOMP service is not accessible
  262. Bug Fixes
  263. ~~~~~~~~~
  264. None with this release.
  265. Other
  266. ~~~~~
  267. - Documentation now available on `<https://lakesuperior.readthedocs.io>`__ and
  268. updated with each release
  269. - Python package hosted on `<https://pypi.org/project/lakesuperior/>`__.
  270. Please make sure you read the updated install instructions.
  271. - Switch semantic version tag naming to a format compatible with PyPI.
  272. 1.0 Alpha 8
  273. -----------
  274. *March 26, 2018*
  275. Alpha 8 introduces a migration tool and other enhancements and bug fixes.
  276. Features
  277. ~~~~~~~~
  278. - Migration tool (#23)
  279. - Referential integrity checks (#31)
  280. Enhancements
  281. ~~~~~~~~~~~~
  282. - More efficient and cleaner handling of data keys (#17)
  283. - Enhanced resource view in UI
  284. - Simplified and more efficient PATCH operations
  285. - Zero configuration startup
  286. - More minor enhancements
  287. Bug Fixes
  288. ~~~~~~~~~
  289. - STOMP protocol mismatch
  290. - Missing UID slash when POSTing to root (#26)
  291. - Running out of readers in long-running processes
  292. Other
  293. ~~~~~
  294. - Travis and Docker integration
  295. 1.0 Alpha 7.1
  296. -------------
  297. *March 9, 2018*
  298. 1.0 Alpha 7
  299. -----------
  300. *March 6, 2018*
  301. This is the first publicly advertised release of LAKEsuperior.
  302. Some major features are missing and test coverage is very low but the
  303. application is proven to perform several basic operations on its own and with
  304. Hyrax 2.0.
  305. 1.0 Alpha 6
  306. -----------
  307. *February 28, 2018*
  308. 1.0 Alpha 5
  309. -----------
  310. *February 14, 2018*
  311. 1.0 Alpha 4
  312. -----------
  313. *January 13, 2018*
  314. 1.0 Alpha 3
  315. -----------
  316. *January 9, 2018*
  317. 1.0 Alpha 2
  318. -----------
  319. *Dec 23, 2017*
  320. 1.0 Alpha 1
  321. -----------
  322. *Nov 24, 2017*
  323. .. [#] Nothing wrong with @dw's excellent Python LMDB library; however,
  324. Lakesuperior performs heavy manipulation on data retrieved from the store which
  325. is more efficiently done in C/Cython.