trixi-framework/P4est.jl

Improve new bindings based on Clang.jl

ranocha opened this issue · 1 comments

The first complete version is implemented in #49. Here is a list of improvements left for future PRs:

  • Add more tests for CI
    • Some basic tests performed similarly for p4est
    • Tests of stuff we use in Trixi.jl, see, e.g., trixi-framework/Trixi.jl#1184
    • Also run some tests with multiple (2?) MPI ranks
    • More stuff later, e.g., wrap also VTK headers and test output
  • Make tests look nicer
    • Right now, defining functions in the @testsets used for @cfunction does not work directly. Thus, we define callback functions before the other code, which is not ideal since it is not really local. Can we improve this, e.g., by writing such @testsets in their own files?
  • Set strict = true in docs/make.jl and make Documenter work again in CI
  • Improve corresponding Trixi.jl parts:
    • Check whether quadrant_obj = unsafe_load(quadrant); quadrant_obj.x has a performance impact and whether we should use something like unsafe_load(quadrant.x) instead, see trixi-framework/Trixi.jl#1184
  • Create helper functions in P4est.jl for patterns used often in Trixi.jl
    • See for example the idea pointer_load(info, sides, elem_count) in trixi-framework/Trixi.jl#1184 (comment) (which should probably be pointer_load(info, :sides, :elem_count) or @pointer_load(info, sides, elem_count))
    • Maybe #58 as an alternative?
  • More getproperty overloads
    • Right now, we get nice getproperty overloads for some pointer types such as Ptr{p4est_quadrant}. It would be nice to have these overloads also to the basic structs such as p4est etc.
    • Maybe #58 as an alternative?
  • Create a list of headers we do not wrap at the moment
    • Are they needed, shall we add them?
  • How do we want to generate and store new bindings?
    • Bindings specific to p4est versions in src (as drafted in this PR in db12e75)?
    • Infrastructure to build new bindings as we currently have in dev with documentation how to use this stuff and put in in a file that can be used with locally generated bindings?
    • Describe the process in the docs and test it in CI
  • Handle every remaining comment # TODO: Clang (if any)
  • Get rid of dev/fixes.sh and implement the adaptations in Julia in dev/generator.jl to make everything accessible to people familiar with Julia but not necessarily sed etc.

@JoshuaLampert The new version including PointerWrappers should be released soon. Thus, you should be able to start working on the updates to Trixi.jl.