NCrystal release 4.1.0 #232
tkittel
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
This minor release first and foremost adds a new "virtual API", which allows NCrystal to be used as a runtime plugin in downstream applications.
Technically, this is done through usage of relevant abstract C++ interfaces in a set of "virtual api" headers. These headers are guaranteed to remain stable (unchanged in fact) across all future NCrystal versions. Additionally, a factory function is provided which can instantiate these interfaces, and it is available with C-bindings so downstream application can invoke it at runtime via either
dlopen
+dlsym
(on Unix) orLoadLibrary
+GetProcAddress
(on Windows). For now only one such "virtual api" header is provided, intended to simplify and enhance usage of NCrystal in the OpenMC project.For inspiration, an example project using NCrystal in this manner is provided in the examples/virtualapi_project folder.
As an added bonus, applications desiring absolute ABI stability from NCrystal, can use the new "virtual API" interfaces to obtain that. This is true, even for applications with a more typical build-time dependency on NCrystal, and do not wish to open the NCrystal library dynamically at runtime. Currently the only actual example of such usage can be found in this test application.
Full Changelog: v4.0.2...v4.1.0
This discussion was created from the release NCrystal release 4.1.0.
Beta Was this translation helpful? Give feedback.
All reactions