ORC api changes from 6.0 to 7.0

Hi,

I am using ORC api in my project and I discovered that my code doesn't
compile anymore with LLVM 7.0.

Firstly, what was the reason for a breaking change?
Secondly, is there a description of what changed in the ORC api and
instructions on how to upgrade?

Are further breaking changes planned that I need to be aware of?

Thanks and regards
Dibyendu

FYI; http://lists.llvm.org/pipermail/llvm-dev/2018-July/124417.html

Some release notes of the changes would have been a good idea.

Hi Jeremy,

Some release notes of the changes would have been a good idea.

Good point. My apologies for not including any in 7.0.

Firstly, what was the reason for a breaking change?

Hopefully the email that Jeremy linked helps, but the short version is that the changes are driven by a desire to support concurrent compilation in the JIT.

Secondly, is there a description of what changed in the ORC api and instructions on how to upgrade?

I just gave a talk at the LLVM Developers meeting that answered some of these questions. Hopefully that will go up on llvm.org soon. I am also updating the “Building A JIT” tutorial series. The first chapter’s code and document have already been uploaded and I am working on the second chapter.

Also, if you have any questions you would like to ask here then please feel free: I would be happy to answer them, and others may find the discussion useful too.

Are further breaking changes planned that I need to be aware of?

The biggest change on the mainline is that the existing layers have been renamed from XXXLayer to LegacyXXXLayer. I hope to deprecate them entirely in favor of the new layers (which have concurrency support) in 9.0.

More generally: the concurrency project is ongoing and I expect there to be a higher rate of churn on the mainline (including breaking changes) between now and 8.0. Hopefully the churn will be lower after that, though we always reserve the right to break APIs in LLVM of course.

Cheers,
Lang.