Skip to content

DIRECT_MEM is harmful for compatibility #2

@kkofler

Description

@kkofler

Commit 1696f02 introduces a DIRECT_MEM mode that accesses SCIP data structures directly in memory instead of going through the public accessor functions. Unfortunately, this introduces a dependency on the exact structure layout. The problem is, this structure layout can change from one SCIP version to the other. (This is an issue we also had with the C macros in the context of JSCIPOpt: scipopt/JSCIPOpt@5db250f where it affected binary compatibility between libjscip and different versions of libscip.)

As a result, not only is JNA_SCIP compiled to only work with a particular version of SCIP, but a new version can also require changes to the actual source code of JNA_SCIP, because address offsets are hardcoded in your Java code.

So performance-wise, it may be a win (though I would also love to see your benchmark results on this), but compatibility-wise, DIRECT_MEM is unfortunately a nightmare.

Hence, I would suggest to at least turn DIRECT_MEM off by default in the published source code (if it is worth keeping at all due to the performance issue).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions