Skip to content

Commit 514966f

Browse files
committed
Add release notes.
[skip ci]
1 parent 0eab4eb commit 514966f

File tree

2 files changed

+123
-1
lines changed

2 files changed

+123
-1
lines changed

NEWS.md

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
# LLVM.jl release notes
2+
3+
4+
## In development: LLVM.jl v9.1
5+
6+
The most important feature of this release is the addition of documentation, both in the
7+
form of function docstrings, and an extensive manual.
8+
9+
As part of the documentation writing effort, many minor issues or areas for improvement were
10+
identified, resulting in a large amount of minor, but breaking changes. For all of those,
11+
deprecations are in place, so this release is not technically breaking. However, it is
12+
strongly recommended to update your code to the new APIs as soon as possible, which can be
13+
done by testing your code with `--depwarn=error`.
14+
15+
Technically beaking changes:
16+
17+
- Metadata values attached using the `metadata` function [now need to
18+
be](https://github.com/maleadt/LLVM.jl/pull/476) a subtype of `MDNode`. This behavior
19+
was already expected by LLVM, but only triggered a crash using an assertions build.
20+
- Creating a `ThreadSafeModule` from a `Module` [now
21+
will](https://github.com/maleadt/LLVM.jl/pull/474) copy the source module into the active
22+
thread-safe context. This is a behavioural change, but is unlikely to affect any users.
23+
The previous behavior resulted in the wrong context being used, which could lead to
24+
crashes.
25+
26+
Minor changes:
27+
28+
- Branch instruction predicate getters [have been
29+
renamed](https://github.com/maleadt/LLVM.jl/pull/473) from `predicate_int` and
30+
`predicate_float` to simply `predicate`. The old names are deprecated.
31+
- Conversion of a `MDString` to a Julia string [is now
32+
implemented](https://github.com/maleadt/LLVM.jl/pull/470) using the `convert` method,
33+
rather than the `string` method. The old method is deprecated.
34+
- The `delete!` and `unsafe_delete!` methods [have been
35+
renamed](https://github.com/maleadt/LLVM.jl/pull/467) to `remove!` and `erase!` to more
36+
closely match LLVM's terminology. The old names are deprecated.
37+
- Copy constructors [have been deprecated](https://github.com/maleadt/LLVM.jl/pull/466) in
38+
favor of explicit `copy` methods.
39+
- Several publicly unused APIs that had been deprecated upstream, have been removed:
40+
[`GlobalContext`](https://github.com/maleadt/LLVM.jl/pull/463),
41+
[`ModuleProvider`](https://github.com/maleadt/LLVM.jl/pull/465),
42+
[`PassRegistry`](https://github.com/maleadt/LLVM.jl/pull/461).
43+
44+
New features:
45+
46+
- A `lookup` function [has been added](https://github.com/maleadt/LLVM.jl/pull/458) to
47+
enable extracting the address of a compiled function from an execution engine. This makes
48+
it possible to simply `ccall` a compiled function without having to deal with
49+
`GenericValue`s.
50+
51+
52+
## LLVM.jl v9.0
53+
54+
Major changes:
55+
56+
- The `OperandBundle` API [was changed](https://github.com/maleadt/LLVM.jl/pull/437) to the
57+
upstream version, replacing `OperandBundleDef` and `OperandBundleUse` with
58+
`OperandBundle`, renaming `tag_name` to `tag` and removing `tag_id`. No deprecations are
59+
in place for this change.
60+
- The `SyncScope` API [was changed](https://github.com/maleadt/LLVM.jl/pull/443) to the
61+
upstream version, switching from string-based synchronization scope names to a
62+
`SyncScope` object, while adding `is_atomic` check and `syncscope`/`syncscope!` getters
63+
and setters for atomic instructions. Deprecations are in place for the old API.
64+
65+
New features:
66+
67+
- Support for LLVM 18
68+
- An alias-analysis pipeline [can now be
69+
specified](https://github.com/maleadt/LLVM.jl/pull/439) using the `NewPMAAManager` API.
70+
- API wrappers [now come with](https://github.com/maleadt/LLVM.jl/pull/448) docstrings.
71+
- Functions [have been added](https://github.com/maleadt/LLVM.jl/pull/447) to move between
72+
blocks, instructions and functions without having to iterate using the parent.
73+
74+
75+
## LLVM.jl v8.1
76+
77+
Minor changes:
78+
79+
- Support for Julia versions below v1.10 has been dropped.
80+
81+
New features:
82+
83+
- A [memory checker](https://github.com/maleadt/LLVM.jl/pull/420) has been added. Toggling
84+
the `memcheck` preference to `true` will enable LLVM.jl to detect missing disposes, use
85+
after frees, etc.
86+
- Support for `atomic_rmw!` with synchronizatin scopes [has been
87+
added](https://github.com/maleadt/LLVM.jl/pull/431)
88+
89+
90+
## LLVM.jl v8.0
91+
92+
Major changes:
93+
94+
- The NewPM wrappers [have been overhauled](https://github.com/maleadt/LLVM.jl/pull/416) to
95+
be based on the upstream string-based interface, rather than maintaining various API
96+
extensions to expose the pass manager internals. There are no deprecations in place for
97+
this change.
98+
99+
100+
## LLVM.jl v7.2
101+
102+
Minor changes:
103+
104+
- Metadata APIs [have been extended](https://github.com/maleadt/LLVM.jl/pull/414) to all
105+
value subtypes, making it possible to attach metadata to functions.
106+
107+
108+
## LLVM.jl v7.1
109+
110+
Minor changes:
111+
112+
- The NewPM internalize pass [has been
113+
extended](https://github.com/maleadt/LLVM.jl/pull/409) to support a list of exported
114+
symbols. This makes it possible to switch GPUCompiler.jl to the new pass manager.
115+
116+
117+
## LLVM.jl v7.0
118+
119+
Major changes:
120+
121+
- `LowerSIMDLoopPass` [was switched](https://github.com/maleadt/LLVM.jl/pull/398) to being a
122+
loop pass on Julia v1.10. This may require having to use a different pass manager.

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "LLVM"
22
uuid = "929cbde3-209d-540e-8aea-75f648917ca0"
3-
version = "9.0.0"
3+
version = "9.1.0"
44

55
[deps]
66
CEnum = "fa961155-64e5-5f13-b03f-caf6b980ea82"

0 commit comments

Comments
 (0)