Omr: Versioned Releases for Eclipse OMR

Created on 9 Dec 2018  ·  11Comments  ·  Source: eclipse/omr

Hello OMR team,

I am quite interested in this project and to be able to really build something usable, I feel it's vital to have a versioned release cycle for Eclipse OMR.

Could you please consider releasing a stable v1.0 base for this technology soon?

discussion question release

Most helpful comment

@abhi18av For any given component, you should see a <library>_api.h header under include_core/, that's where the API is defined and documented.

For the threading library, look at include_core/thread_api.h.

util is actually a number of independent libraries, and each should have it's own API header. For example, the hashtable utility's header is include_core/hashtable_api.h.

The port library is a little different. Port library functions are accessed through macros defined in include_core/omrport.h. This will give you a list of available functions. The documentation for each function is attached to the “common” implementation. for example, omrfile_* functions are documented in port/common/omrfile.c.

All 11 comments

Hey @abhi18av!

At the moment, different components have different levels of stability. Is there an OMR component in particular that you're interested in? Will you share with us what project ideas you have? :slightly_smiling_face:

Thanks for the revert @Leonardo2718 !

I'd like to be able to experiment with Compiler construction and writing my own programming languages much like the official LLVM tutorials in OCaml language.

But as of now, I'm not able to identify a good starting point for the same. Having a specific, tagged base seemed like a good idea to be able to start exploring the various components of the OMR framework.

I'd like to move forward with the OCaml bindings for the OMR framework, how could I get started with this?

If you want to get started with the OMR Compiler and JitBuilder, you can take a look at the Base9 tutorial we've created:

@mstoodle has written a couple of blog posts on JitBuilder. They're a bit old but still relevant:

If you're interested in learning more about the core compiler technology, we host online compiler architecture meetings every two weeks that you are welcome to participate in, if you can. If not, these are recorded and uploaded to YouTube, where we also post so-called Compiler Vitality Talks that discuss the compiler technology at a deep technical level.

You can also get in touch and ask questions

For inspiration, there are a few ports of existing languages to OMR, for example (not exhaustive, only the ones I was able to quickly get a link for):

Hopefully that answered your question and you'll be able to start working on something soon :slightly_smiling_face:

To address your original question about a 1.0 release: that's something we've been trying to work towards. It will take time for the APIs of all components to stabilize, so I suspect I it will be a while before we can have a 1.0 release for all of OMR (though I could be wrong, @mstoodle @charliegracie ). In the mean time, we're hoping to start version a few components (e.g. JitBuilder) that are already fairly stable. They won't be 1.0 but we'll do our best to keep the API stable.

Sounds like an interesting project, @abhi18av ! I think @Leonardo2718 has given a fine answer on how you might move forward and linked to some of the more relevant information sources. I encourage you to join our Slack instance and ask any and all questions on the #compiler or #jitbuilder (depending where you begin) channels.

JitBuilder should be a gentler introduction native code compilation and the client API work we're doing now paves the way for maintainable set of bindings for Ocaml, which I think would be cool all on its own :) and a great way to start digging into creating your own programming languages.

But if you're really interested to get into harder core compiler construction, then you'll be more likely interested to interface with the compiler component itself. That's more work, but also a more powerful way to build compilers. If so, you may find an interesting reference in the C bindings for the OMR compiler that @dibyendumajumdar created in support of his Ravi compiler (see https://github.com/dibyendumajumdar/nj for more information on that).

Finally: Welcome! Thanks for asking your question and I'll hope to hear more about your OCaml exploits with OMR :) .

Hi @abhi18av just pinging here to say that we have now released Eclipse OMR v0.1.0 . We consider this release stable even with a leading '0'. In fact, Eclipse OpenJ9 is using this same release as the basis for its 0.17 release going out this month, which will also make its way into the IBM SDK for Java 8 and hence used in production deployments across the industry.

If you have any questions about the release, feel free to post them here or at our slack channels. We are, of course, interested in any and all feedback as we move forward with versioned releases.

Thanks @mstoodle, @Leonardo2718 and the OMR team :)

Oh, could you also please point me where to read the OMR API docs?

I'm afraid it's not all in one place and it's not entirely complete, which I recognize isn't a great answer. We'll work to put it into a more consumable format, at least for those components we have declared "API stable". Thanks for asking the question to make us realize it wasn't already available.

@rwy would you please point Abhinav at the documentation we have in the headers and source files for port, thread, and util ? @0xdaryl we should probably add a topic to the architecture meeting to discuss where such API docs should be put and how we should collect it.

Looking forward to it 👍

@abhi18av For any given component, you should see a <library>_api.h header under include_core/, that's where the API is defined and documented.

For the threading library, look at include_core/thread_api.h.

util is actually a number of independent libraries, and each should have it's own API header. For example, the hashtable utility's header is include_core/hashtable_api.h.

The port library is a little different. Port library functions are accessed through macros defined in include_core/omrport.h. This will give you a list of available functions. The documentation for each function is attached to the “common” implementation. for example, omrfile_* functions are documented in port/common/omrfile.c.

Cool! Now I've got some idea about the API for sure 😊

Was this page helpful?
0 / 5 - 0 ratings

Related issues

0xdaryl picture 0xdaryl  ·  5Comments

Leonardo2718 picture Leonardo2718  ·  6Comments

0xdaryl picture 0xdaryl  ·  4Comments

aviansie-ben picture aviansie-ben  ·  6Comments

0xdaryl picture 0xdaryl  ·  5Comments