release_notes.rst 10 KB

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