release_notes.rst 11 KB

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