timefold-solver icon indicating copy to clipboard operation
timefold-solver copied to clipboard

Solver Core: split up gizmo generation and gizmo runtime code in seperate packages

Open ge0ffrey opened this issue 2 years ago • 3 comments

The gizmo generated runtime code should not import io.gizmo.

image

The (MemberAccessor)Factory should generate the bytecode for non-quarkus cases and require gizmo on classpath at runtime. Quarkus does that during the build, so no need for gizmo on the classpath. The code generating code and the runtime code must be in separate packages (runtime/deployment?)

Related issues:

  • GizmoMemberDescriptor naming. It does not extend MemberDescriptor.
  • GizmoClassLoader naming. It's part of Timefold.
  • ...

ge0ffrey avatar Jun 26 '23 11:06 ge0ffrey

Is there any support for Spring Boot native images planned? I assume it should be possible to use Gizmo to build the bytecode ahead of time there as well.

I'm still digging into Spring Boot native images, so I cannot contribute anything of use yet.

thimmwork avatar Dec 12 '23 12:12 thimmwork

@thimmwork We want to keep our support for Quarkus and Spring Boot functionally equivalent, so native support should eventually show up for Spring Boot as well. However, it is not on the short-term roadmap.

If you want to work on this, pull requests are welcome! Doing it using Gizmo would be preferred, as then we could reuse much of the Quarkus code instead of duplicating the logic with some other library.

triceo avatar Dec 12 '23 12:12 triceo

See also https://github.com/TimefoldAI/timefold-solver/issues/547

ge0ffrey avatar Jan 08 '24 13:01 ge0ffrey