Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: bump llvm to version 16 #350

Merged
merged 47 commits into from
Nov 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
914f8e8
init
CjiW Aug 10, 2023
f123f07
fix: gc
Chronostasys Aug 10, 2023
ad17eeb
fix: gc cross thread not parallel in stackmap mode
Chronostasys Aug 10, 2023
ba1ddaf
fix: lib backtrace must sync
Chronostasys Aug 10, 2023
dff8d91
draft: chan in pl
CjiW Aug 14, 2023
d4fc8dc
Merge branch 'master' into feat/async
CjiW Aug 14, 2023
3fdec4b
draft: use pl chan
CjiW Aug 14, 2023
0016470
Merge remote-tracking branch 'origin/fix/bugs0814' into feat/async
CjiW Aug 15, 2023
d80ee49
draft: generic bugs
CjiW Aug 15, 2023
40c848f
Merge remote-tracking branch 'origin/fix/bugs0814' into feat/async
CjiW Aug 15, 2023
9a012b1
draft: new bug
CjiW Aug 15, 2023
0693ec0
draft: genfuture
CjiW Aug 16, 2023
8c57607
Merge remote-tracking branch 'origin/fix/bugs0814' into feat/async
CjiW Aug 16, 2023
7839747
draft
CjiW Aug 27, 2023
f0ad16a
Merge branch 'master' into feat/async
Chronostasys Nov 6, 2023
a2b8c28
fix: gc stuck
Chronostasys Nov 6, 2023
ecadd52
fix: wrong gc stuck logic
Chronostasys Nov 6, 2023
394359c
fix: wrong lsp diag
Chronostasys Nov 6, 2023
fa86d89
fix: stuck panic
Chronostasys Nov 6, 2023
1c726f9
fix: multi thread bugs
Chronostasys Nov 7, 2023
33bec9f
fix: global
Chronostasys Nov 7, 2023
2473e97
fix: add keep alive interface
Chronostasys Nov 7, 2023
1c309f5
try fix
Chronostasys Nov 7, 2023
35837f0
fix: fmt & linux linking
Chronostasys Nov 7, 2023
efc5a24
feat: use condvar to control nanny thread
Chronostasys Nov 7, 2023
6c9c38e
fix: better condvars
Chronostasys Nov 7, 2023
d056e03
feat: add infer structure
Chronostasys Nov 11, 2023
99e35c5
feat: basic inference
Chronostasys Nov 12, 2023
7da6114
feat: basic closure type inference
Chronostasys Nov 12, 2023
c3482ce
fix: type bug
Chronostasys Nov 12, 2023
cfde9ad
fix: hint
Chronostasys Nov 12, 2023
6e9efba
fix: add basic fn infer
Chronostasys Nov 13, 2023
19cb46e
feat: implement more inference
Chronostasys Nov 13, 2023
3217f25
fix: some infer bugs
Chronostasys Nov 14, 2023
f6a9468
feat: add more inferences
Chronostasys Nov 15, 2023
149b71e
feat: more references
Chronostasys Nov 15, 2023
ac24c00
fix: allow take addr of immediate value
Chronostasys Nov 15, 2023
bca79c9
fix tp
Chronostasys Nov 20, 2023
a09769d
half update
Chronostasys Nov 21, 2023
d449a7e
fix compile mac
Chronostasys Nov 21, 2023
d8fe297
feat: done update llvm@16
Chronostasys Nov 22, 2023
2714577
fix: make clippy happy
Chronostasys Nov 22, 2023
eeb25b6
chore: make clippy happy
Chronostasys Nov 22, 2023
710010c
fix: win flag
Chronostasys Nov 22, 2023
2d401b7
try fix link
Chronostasys Nov 22, 2023
01866cd
Merge branch 'master' into feat/llvm@16
Chronostasys Nov 22, 2023
590b61b
fix: add inference to src tree
Chronostasys Nov 22, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 30 additions & 104 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ authors = ["The pivot-lang Authors"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
inkwell = { version = "0.1", optional = true, features = ["llvm14-0", "no-libffi-linking"] }
llvm-sys = { version = "140", optional = true }
inkwell = { git = "https://github.com/TheDan64/inkwell", branch = "master", optional = true, features = ["llvm16-0", "no-libffi-linking"] }
llvm-sys = { version = "160", optional = true }
pl_linker = { path = "./pl_linker", optional = true }
immix = { path = "./immix", optional = true, features = ["llvm_gc_plugin", "llvm_stackmap"] }
vm = { path = "./vm", optional = true, features = ["jit"] }
Expand Down Expand Up @@ -45,6 +45,7 @@ derivative = "2.2"
console = "0.15"
anstyle = "1.0"
regex = "1.9"
ena = "0.2"

[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = "0.2"
Expand Down
2 changes: 1 addition & 1 deletion immix/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ libc = "0.2"
parking_lot = "0.12"
rustc-hash = "1.1"
lazy_static = "1.4"
vector-map = "1.0"
backtrace = "0.3"
log = "0.4"
memory-stats = "1.1"
threadpool = {version = "1.8"}

[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3", features = ["winuser","memoryapi"] }
Expand Down
2 changes: 1 addition & 1 deletion immix/benches/immix_bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ fn test_complecated_multiple_thread_gc(num_iter: usize, threads: usize) -> Durat
for h in handles {
times.push(h.join().unwrap());
}
times.sort_by(|k1, k2| (k1).cmp(k2));
times.sort();
times.pop().unwrap()
}

Expand Down
22 changes: 12 additions & 10 deletions immix/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,33 +33,33 @@ fn main() {
lazy_static! {
/// A single path to search for LLVM in (containing bin/llvm-config)
static ref ENV_LLVM_PREFIX: String =
format!("LLVM_SYS_{}_PREFIX", 140);
format!("LLVM_SYS_{}_PREFIX", 160);

/// If exactly "YES", ignore the version blocklist
static ref ENV_IGNORE_BLOCKLIST: String =
format!("LLVM_SYS_{}_IGNORE_BLOCKLIST", 140);
format!("LLVM_SYS_{}_IGNORE_BLOCKLIST", 160);

/// If set, enforce precise correspondence between crate and binary versions.
static ref ENV_STRICT_VERSIONING: String =
format!("LLVM_SYS_{}_STRICT_VERSIONING", 140);
format!("LLVM_SYS_{}_STRICT_VERSIONING", 160);

/// If set, do not attempt to strip irrelevant options for llvm-config --cflags
static ref ENV_NO_CLEAN_CFLAGS: String =
format!("LLVM_SYS_{}_NO_CLEAN_CFLAGS", 140);
format!("LLVM_SYS_{}_NO_CLEAN_CFLAGS", 160);

/// If set and targeting MSVC, force the debug runtime library
static ref ENV_USE_DEBUG_MSVCRT: String =
format!("LLVM_SYS_{}_USE_DEBUG_MSVCRT", 140);
format!("LLVM_SYS_{}_USE_DEBUG_MSVCRT", 160);

/// If set, always link against libffi
static ref ENV_FORCE_FFI: String =
format!("LLVM_SYS_{}_FFI_WORKAROUND", 140);
format!("LLVM_SYS_{}_FFI_WORKAROUND", 160);
}

lazy_static! {
/// LLVM version used by this version of the crate.
static ref CRATE_VERSION: Version = {
let crate_version = Version::parse("140.0.6")
let crate_version = Version::parse("160.0.6")
.expect("Crate version is somehow not valid semver");
Version {
major: crate_version.major / 10,
Expand Down Expand Up @@ -244,19 +244,21 @@ fn main() {
fn get_system_libraries() -> Vec<String> {
llvm_config("--system-libs")
.split(&[' ', '\n'] as &[char])
.filter(|s| !s.is_empty())
.filter(|s| !s.is_empty() && s.starts_with("-l"))
.map(|flag| {
if cfg!(target_env = "msvc") {
// Same as --libnames, foo.lib
assert!(flag.ends_with(".lib"));
&flag[..flag.len() - 4]
} else if cfg!(target_os = "macos") {
// Linker flags style, -lfoo
assert!(flag.starts_with("-l"));
// assert!(flag.starts_with("-l"), "{}",flag);
if flag.ends_with(".tbd") && flag.starts_with("-llib") {
&flag[5..flag.len() - 4]
} else if let Some(postfix) = flag.strip_prefix("-l") {
postfix
} else {
&flag[2..]
flag
}
} else {
if let Some(f) = flag.strip_prefix("-l") {
Expand Down
Loading
Loading