_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
I agree, the deprecation of Orc v1 should come with more guidance and preparation than currently available. I don't think you are missing any channel. The main sources of information are code and reviews. I gathered some data on typical lines of argumentation below. Maybe it makes sense to have look at them in isolation.
TL;DR: While I do have a number of proposals for the points in the end, I would first like to hear your opinions.
(1) MCJIT can be considered mature and stable, while Orc is experimental:
* Orc is in trunk for more than 4 years now [1]
* tutorials moved to Orc with Release 3.8 (3 years ago) [2]
* "ORC should be preferred for new projects" made it to the official release notes only now, with 8.0
* it's a common statement on the list since many years [3]
(2) The LLVM test suite has various use-cases for lli, so the JIT gets exercised well. Grepping through lit tests on master today gives me:
* 202 matches for lli in total (regex: RUN.*[% ]lli)
* 80 matches for lli using Orc v1 (regex: RUN.*[% ]lli.*jit-kind=orc-mcjit)
* 17 matches for lli using Orc v2 (regex: RUN.*[% ]lli.*jit-kind=orc-lazy)
(3) There are few active stakeholders in LLVM JIT development:
* ExecutionEngine saw about 250 commits in total during the last year (looking at: llvm/include/llvm/ExecutionEngine && llvm/lib/ExecutionEngine)
* 192 of these are from Lang, most of the remaining one's are either not touching the JIT or NFC
* I just submitted a fix for JITed code debugging in LLDB, which was broken since Release 5.0 [4]
Conclusions?
* All newcomers go with Orc, because the tutorial uses it and the list recommends it.
* Some newcomers became clients. Their projects got mature and they ask for a more stable API.
* We saw drastic API changes in Orc with past releases. Upcoming releases should account for the rate of adoption more and more.
* Most clients stay clients. Certainly, there are many reasons for that. Anyway, we need more active participation.
It's time to:
* Switch lli's default to Orc to increase visibility and test coverage. Of course, MCJIT-specific tests should pass -jit-kind=mcjit.
* Agree on a way forward, at least for the current release, so we can carve out small/simple tasks and distribute the work in the community. If the removal of Orc v1 is part of the plan, we should start convergence soon.
* Communicate/discuss the current state (haves and wants) regularly and transparently.
* Get more people to participate actively.
[1] https://github.com/llvm/llvm-project/commit/93de2a12
[2] http://releases.llvm.org/3.8.0/docs/ReleaseNotes.html#non-comprehensive-list-of-changes-in-this-release
[3] http://lists.llvm.org/pipermail/llvm-dev/2016-March/097767.html
[4] https://reviews.llvm.org/D61611
_______________________________________________ LLVM Developers mailing list llvm...@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
On 5/17/19 9:46 PM, Christian Schafmeister wrote:
I'm very excited about the work Lang has been doing
1. Is there a migration guide I can use to update my code to the new version?
2. Is there any development plan for this part of LLVM? So far I have feeling that it's a closed source development.
3. Is there some communication channels I am missing to follow? I follow dev&commits mailing lists and present on IRC once in a while, but I somehow missed the message about the Orc v1 removal.
On 5/17/19 9:46 PM, Christian Schafmeister wrote:
Recently, I switched over to using the new API - works great!
I'm excited to hear that there is a fix for lldb debugging of jitted code coming (thanks Stefan!).
Well, it's a start. (One can always fall back to GDB :b)
Updated the bug report, with a shot summary of what has been done
and what is necessary next:
https://bugs.llvm.org/show_bug.cgi?id=36209#c2
On 5/17/19 9:46 PM, Christian Schafmeister wrote:
I'll try to migrate my code to the v2 API and describe the process, but please don't take my words as a promise :-D
After re-reading my statement I realized that it was too harsh, sorry about that. I rather meant that I was only able to get information post factum, which reminded some of our hardware vendors :)
> I plan to add deprecation attributes to the legacy classes on trunk so that clients who use 9.0 receive warnings.
That's a very good idea. I think I understand your motivation to force everyone to use the new APIs, but I also think it makes sense to make the migration process a bit more smooth.
> Correction : Kaleidoscope chapter 1 & 2 are up-to-date. But chapter
> 3..5 are not.
Where do you got the info from? Do you know what exactly is missing/broken?
Maybe we summarize in a ticket and try to get it done before the next
release.
Currently we only have: https://bugs.llvm.org/show_bug.cgi?id=41595
Cheers
Stefan
It is mentioned on the tutorial page as a warning at the top:
http://llvm.org/docs/tutorial/BuildingAJIT1.html
> Maybe we summarize in a ticket and try to get it done before the next
> release.
> Currently we only have: https://bugs.llvm.org/show_bug.cgi?id=41595
Kaleidoscope: http://llvm.org/docs/tutorial/LangImpl01.html -- all
up-to-date?
BuildingAJIT: http://llvm.org/docs/tutorial/BuildingAJIT1.html -- update
chapters 3-5 is todo?
On 5/24/19 2:59 PM, Frank Tetzel wrote:
>>> Correction : Kaleidoscope chapter 1 & 2 are up-to-date. But chapter
>>> 3..5 are not.
>> Where do you got the info from? Do you know what exactly is
>> missing/broken?
> It is mentioned on the tutorial page as a warning at the top:
> http://llvm.org/docs/tutorial/BuildingAJIT1.html
>
>
>> Maybe we summarize in a ticket and try to get it done before the next
>> release.
>> Currently we only have: https://bugs.llvm.org/show_bug.cgi?id=41595
--
https://flowcrypt.com/pub/stefan....@gmail.com