Release date: 2018-08-20 SHA-256: ce6b5610a051ec6795fa11c33854abebb086f0fd67c311f5921c3c07f9531b44 (json.hpp), 35ee642558b90e2f9bc758995c4788c4b4d4dec54eef95fb8f38cb4d49c8fc7c (include.zip) ### Summary This release introduces a [**SAX interface**](https://nlohmann.github.io/json/structnlohmann_1_1json__sax.html) to the library. While this may be a very special feature used by only few people, it allowed to unify all functions that consumed input and created some kind of JSON value. Internally, now all existing functions like `parse`, `accept`, `from_cbor`, `from_msgpack`, and `from_ubjson` use the SAX interface with different event processors. This allowed to separate the input processing from the value generation. Furthermore, throwing an exception in case of a parse error is now optional and up to the event processor. Finally, the JSON parser is now non-recursive (meaning it does not use the call stack, but `std::vector<bool>` to track the hierarchy of structured values) which allows to process nested input more efficiently. Furthermore, the library finally is able to parse from **wide string types**. This is the first step toward opening the library from UTF-8 to UTF-16 and UTF-32. This release further fixes several bugs in the library. All changes are backward-compatible. ### :sparkles: New Features - added a parser with a **SAX interface** (#971, #1153) - support to parse from **wide string types** `std::wstring`, `std::u16string`, and `std::u32string`; the input will be converted to UTF-8 (#1031) - added support for **`std::string_view`** when using C++17 (#1028) - allow to **roundtrip `std::map` and `std::unordered_map`** from JSON if key type is not convertible to string; in these cases, values are serialized to arrays of pairs (#1079, #1089, #1133, #1138) ### :bug: Bug Fixes - allow to create `nullptr_t` from JSON allowing to properly roundtrip `null` values (#1169) - allow compare user-defined string types (#1130) - better support for algorithms using iterators from `items()` (#1045, #1134) - added parameter to avoid compilation error with MSVC 2015 debug builds (#1114) - re-added accidentially skipped unit tests (#1176) - fixed MSVC issue with `std::swap` (#1168) ### :zap: Improvements - `key()` function for iterators returns a const reference rather than a string copy (#1098) - binary formats CBOR, MessagePack, and UBJSON now supports `float` as type for floating-point numbers (#1021) ### :hammer: Further Changes - changed issue templates - improved continuous integration: added builders for Xcode 9.3 and 9.4, added builders for GCC 8 and Clang 6, added builder for MinGW, added builders for MSVC targeting x86 - required CMake version is now at least 3.8 (#1040) - overworked CMake file wrt. packaging (#1048) - added package managers: Spack (#1041) and CocoaPods (#1148) - fixed Meson include directory (#1142) - preprocessor macro `JSON_SKIP_UNSUPPORTED_COMPILER_CHECK` can skip the rejection of unsupported compilers - use at your own risk! (#1128) - preprocessor macro `JSON_INTERNAL_CATCH`/`JSON_INTERNAL_CATCH_USER` allows to control the behavior of exception handling inside the library (#1187) - added note on `char` to JSON conversion - added note how to send security-related issue via encrypted email - removed dependency to `std::stringstream` (#1117) - added SPDX-License-Identifier - added updated JSON Parsing Test Suite, described in [Parsing JSON is a Minefield 💣](http://seriot.ch/parsing_json.php) - updated to Catch 1.12.0 ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
### IDE - [`KT-25622`](https://youtrack.jetbrains.com/issue/KT-25622) IDE support for RecentlyNullable/RecentlyNonNull - [`KT-26036`](https://youtrack.jetbrains.com/issue/KT-26036) Kotlin 1.2.60 LightAnnotations and Lombok ### IDE. Gradle - [`KT-20363`](https://youtrack.jetbrains.com/issue/KT-20363) No "Run" icon on the left for tests in common part of a multi-platform project ### Tools. Android Extensions - [`KT-25839`](https://youtrack.jetbrains.com/issue/KT-25839) Parcelize generates infinite recursive loop ### Tools. JPS - [`KT-26095`](https://youtrack.jetbrains.com/issue/KT-26095) Kotlin facet UI, JS: "Enable incremental compilation (experimental)" should be visible only in project setting ### Tools. kapt - [`KT-24714`](https://youtrack.jetbrains.com/issue/KT-24714) java.lang.IllegalStateException: The provided plugin org.jetbrains.kotlin.kapt3.Kapt3ComponentRegistrar is not compatible with this version of compiler
Changes in 1.0 ============== Flatpak 1.0 is the first version in a new stable release series. This new 1.x series is the successor to the 0.10.x series, which was first introduced in October 2017. 1.0 is the new standard Flatpak version, and distributions are recommended to update to it as soon as possible. The following release notes describe the major changes since 0.10.0. For a complete overview of Flatpak, please see [docs.flatpak.org](http://docs.flatpak.org/en/latest/). ## For users, app developers and distributors Flatpak 1.0 marks a significant improvement in performance and reliability, and includes a big collection of bug fixes. 1.0 also includes a collection of new features, including: * Faster installation and updates. * Applications can now be marked as end-of-life. App centers and desktops can use this information to warn users who have an end-of-life version installed. * Permissions now use an up-front verification model: users are asked to confirm app permissions at install time, if an update requires additional permissions, the user must also confirm. * A [new portal](https://flatpak.github.io/xdg-desktop-portal/portal-docs.html#gdbus-org.freedesktop.portal.Flatpak) allows apps to create sandboxes and restart themselves. This allows applications to restart themselves after they have been updated (to start using the new version), and to increase sandboxing for parts of the application. * `flatpak-spawn` is a new tool for running host commands (if permissions allow) and creating new sandboxes from an app (this uses the above portals APIs). * Apps can now export D-Bus services for all the D-Bus names they are privileged to own (rather than just the application ID). * Flatpak's support for OCI bundles has been updated to the latest specification. Also, AppData can now be distributed through OCI repositories. * Host TLS certificates are now exposed to applications, using p11-kit-server. This removes a point of friction when accessing network services in some environments. * Apps can now request access the host SSH agent to securely access remote servers or Git repositories. * A new application permission can be used to grant access to Bluetooth devices. * A new `fallback-x11` permission grants X11 access, but only if the user is running in a X11 session. For applications that support both Wayland and X11, this can be used to ensure that the app doesn't have unnecessary X11 access while in Wayland, but still works in an X11 session. * Peer-to-peer installation (via USB sticks or local network) is now enabled and supported by default in all builds. The Flatpak command line also introduces new commands and options, including: * `uninstall --unused` automatically removes unused runtimes and extensions (if you've removed all apps that depend on a runtime, or all the apps you had depending on it have upgraded to a newer version). * New `info` options, including `--show-permissions`, `--file-access`, `--show-location`, `--show-runtime`, `--show-sdk`. * `repair` - fixes broken installs by scanning for errors, removing invalid objects and reinstalling anything that's missing. * `permission-*` - allows interaction with the portals permissions store. This is useful for testing and for getting back to a clean state. * `create-usb` - can be used to prepare an repository to be used as a local updates source. Finally, the command line has a collection of other improvements, such as: * If `--system` or `--user` aren't specified, one is automatically picked if it is obvious (or it will ask if the correct option isn't obvious). * The `install`, `update` and `uninstall` commands now ask for confirmation of changes before proceeding, in order to prevent mistakes, and to show the required application permissions. * The `uninstall` command now does not allow you to remove a runtime if some installed application requires it. * `flatpak remove` is now an alias for `flatpak uninstall`. ## For Linux distributors, OS and platform developers * Flatpak no longer requires a filesystem that supports `xattr`. * Portals are now more cleanly separated from Flatpak, thanks to the document portal and permission store having been moved to `xdg-desktop-portal`. It is recommended that the flatpak package has a weak dependency on `xdg-desktop-portal`. * `libflatpak` now has a transaction API for install, update and uninstall operations. This means that it is much easier to use as the basis of app centers and other graphical app management software. * Flatpak now sets several HTTP headers when installing applications, which make it easier for Flatpak repositories to log things like app download statistics and Flatpak versions in use. * It is now recommended that Flatpak packages add a dependency on p11-kit-server, as this allows apps to access host certificates. However, this does not need to be a hard dependency. * Requires bubblewrap 0.2.1 or later, and comes bundled with 0.3.0. * Requires OSTree 2018.7. ``` $ sha256sum flatpak-1.0.0.tar.xz e61bd01cffbbbb2ecd6a0946307987f9de795533358ba6ed7c63ce0c9f3b03e7 flatpak-1.0.0.tar.xz ```