Skip to content

Releases: grasph/wrapit

v1.3.1

26 Mar 10:42
Compare
Choose a tag to compare

Fix compilation for the _jll package.

v1.3.0

24 Mar 08:14
2ff1abe
Compare
Choose a tag to compare

Add support for CxxWrap 0.15.x and several improvements.

CxxWrap 0.15.x support

The CxxWrap version the code should be generated for can now be selected using the new cxxwrap_version configuration parameter, and different code will be generated for versions before and after 0.15.0.

⚠️ Due to a change in the API, wrapping of STL vectors of object pointers does not work with version 0.15.0. More details in
JuliaInterop/CxxWrap.jl#419. The unit tests and the ROOT example that use such vector are configured to use 0.14.x version for now.

Other improvements:

  • new --get command line option to retrieve values of some parameters;
  • new --add-cfg command line option to configure parameter normally set in the .wit configuration file;
  • fixed generation of the random uuid, which was always the same;
  • Add check of the versions of the libcxxwrap when compiling and when running the code.
  • cleanup of Julia package dependencies installation and version handling; Project setting from runtests.jl which is not needed anymore, as each test runs within its own temporary Julia project, was removed.

Contributors to the code update with respect to the previous release: Philippe Gras.

v1.2.0

26 Feb 18:46
Compare
Choose a tag to compare
  • [BREAKING CHANGE] In order to allow loading the Julia module without having to set LD_LIBRARY_PATH environment variable or copy the shared library in one of the system library directories, the path is not set relatively to the location of the Julia module file. The Julia module file is now put in a src subdirectory of the module directory, whose location is defined by out_jl_dir and default a directory called as the module and the library is searched in the deps subdirectory: previous out_jl_dir =X/Y/Z/src should be changed to out_jl_dir =X/Y/Z as src will be systematically added. A Project.toml file is also created, to allow installation of the package a uuid is generated. Now, the Julia module directory looks like
MyWrapper/
  ├── Project.toml
  ├── deps
  │   └── libjlMyWrapper.so
  └── src
       └── MyWrapper.jl

The old behaviour can be restored by setting the lib_basename parameter to lib<module_name>, where <module_name> is the name of the module defined with the module_name parameter.

  • Added support for building the generated code with cmake:
    • generation of a file with useful variables to be included in a cmake build configuration file;
    • added a cmake build configuration sample for the ex001-HelloWorld example.
    • migrated most of the unit tests (from the test directory) to cmake.
    • added the --output-prefix command-line option to prefix all output paths with a directory path, useful for the cmake out-of-source build.
  • The remaining plain Makefiles were modified to do out-of-source build as cmake.
  • Extended the ex002-ROOT example to add TTRee support, including writing TTrees.
  • The WRAPIT macro is now assumed to be defined when parsing the input header file (change in the default value of the macro_definitions parameter).
  • New parameters (N) or parameters whose default value was changed (D): macro_definitions (D), lib_basename (D), project_toml_fname (N), uuid (N), version (N)
  • New command-line options: --clang, --output-prefix

Contributors to the code update with respect to the previous release (alphabetic order): Philippe Gras, Greame A. Stewart, Pere Mato

v1.1.1

22 Dec 14:36
Compare
Choose a tag to compare
  • Bug fix: automatic wrapping of types used by functions was no more effective in v1.1.0.

v1.1.0

13 Dec 23:39
Compare
Choose a tag to compare

General Improvements

  • Better handling of c++ library path. It now sets automatically the resource directory that needed to be set before with the clang option list. It can also be set with a command line option which was added to wrapit. Some checks that it is properly set are performed to provide instructions to the user.
  • Improved support for MacOS (Pere Mato and Ph. Gras)

C++ support improvements

  • Support for std::string_view. It is mapped to const char* when used for function arguments and to std::string when used for a return value.
  • Support for more operators. Every C++ operator that can be overloaded should be supported now. Breaking change: %= is now mapped to rem! instead
    of mod! to be consistent with the name of the Julia base library rem function.
  • Map of prefix operator * to [] (getindex()))
  • Fix the issues in generated code for classes and global function within a namespace reported in #36 and #38.
  • Improved template support (contribution from Allen Hill). Template support is still partial.

Tool installation and usage

  • Support to build with clang developement package bundled with only dynamic libraries, like on RedHat and AlmaLinux 9. Beware LLVM needs now to be built with the BUILD_SHARED_LIBS option ON.
  • LLVM 13 is now recommended. Support for build against LLVM 17 improved, but it does not pass all tests.
  • New vetoed_copy_ctor_classes configurable to allow explicit veto of copy constructor of selected classes.

Fixes

  • Two fixes for fields_and_variables option:
    • It was responding to fields_an_variables before due to a typo;
    • Types of class fields or global variable are no more wrapped if accessors are disabled and the types are not used elsewhere
  • Modify code to prevent generation of uncessary .cxx file for vetoed class in the one-file-per-class mode.
  • Fix of a bug with base override: in some condtions, some unset_override statements were missing from the generated code.
  • Fix of auto_veto for methods depending on a template parameter of its class. auto_veto is now enabled in TestTemplate2

Tests and examples

  • Enlarge sets of unit tests.
  • Extended the ex-ROOT-002 example

Contributors to the code update with respect to the previous release (alphabetic order): Philippe Gras, Allen Hill, Pere Mato, Graeme A. Steward.

v.1.0.0

06 Nov 22:44
Compare
Choose a tag to compare

Changes with respect to v0.1:

  • Several bug fixes
  • Support for inheritance from std::string
  • Generation of a report file
  • Remove wrapping of typedefs
  • Documentation update
  • Improved finalizer and class constructor wrapper generation
  • Better support for natively wrapped stl
  • Wrapit release or git ref included in the generated code source
  • Support for splitting generated code in several source files
  • Support for integral template parameters

Contributors (alphabetic order) to code from previous release: Akiel Aries, Philippe Gras, Allen Hill, Pere Mato, montaquila, t-bltg

First release

24 Nov 14:00
Compare
Choose a tag to compare
Features: complitation

o Does not require anymore RTTI support from the LLVM and clang librarues
  (usually shipped with this support disabled)
o Made the ROOT example Makefile more generic