Dear devs, For the record, I gave resolution to this question in [1]. In this case, studying the commit introducing CStub was enlightening to update inline-java by imitating related updates in GHC. Best, Facundo [1]: https://github.com/tweag/inline-java/issues/205 On Mon, Jul 14, 2025 at 9:28 AM Facundo Domínguez < facundo.dominguez@tweag.io> wrote:
Dear devs,
I upgraded inline-java [1] to use GHC 9.10.2 recently. inline-java has a GHC plugin responsible for embedding JVM bytecode in Haskell modules. This message is to consult on the most appropriate way to do it.
The byte code is placed in a C literal array of bytes, and the C code is added in mg_foreign together with C constructor functions that run when loading the module to add the bytecode to a global bytecode table [2]. The global bytecode table is then fed to the JVM when initializing inline-java.
The GHC API in 9.10.2 requires creating a CStub which does have a field to indicate constructor functions [3], but I wouldn't know how to create the CLabels it needs. So instead, I just put the constructor functions in the getCStub field, and set getInitializers to an empty list. The constructor functions seem to run at initialization just the same.
Should inline-java do this differently?
Thanks in advance! Facundo
[1] https://github.com/tweag/inline-java [2] https://github.com/tweag/inline-java/blob/c6b590c29ef9190164dec3a235b8e386c5... [3] https://gitlab.haskell.org/ghc/ghc/-/blob/3c37d30b07fc85fe09452f4ce250aec42c...
data CStub = CStub { getCStub :: SDoc , getInitializers :: [CLabel] -- ^ Initializers to be run at startup -- See Note [Initializers and finalizers in Cmm] in -- "GHC.Cmm.InitFini". , getFinalizers :: [CLabel] -- ^ Finalizers to be run at shutdown }
-- All views and opinions expressed in this email message are the personal opinions of the author and do not represent those of the organization or its customers.
-- All views and opinions expressed in this email message are the personal opinions of the author and do not represent those of the organization or its customers.