https://github.com/JuliaLang/julia

sort by:
Revision Author Date Message Commit Date
cdef102 optimizer: alias-aware SROA Enhances SROA of mutables using the novel Julia-level escape analysis (on top of #43800): 1. alias-aware SROA, mutable ϕ-node elimination 2. `isdefined` check elimination 3. load-forwarding for non-eliminable but analyzable mutables --- 1. alias-aware SROA, mutable ϕ-node elimination EA's alias analysis allows this new SROA to handle nested mutables allocations pretty well. Now we can eliminate the heap allocations completely from this insanely nested examples by the single analysis/optimization pass: ```julia julia> function refs(x) (Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref((x))))))))))))[][][][][][][][][][] end refs (generic function with 1 method) julia> refs("julia"); @allocated refs("julia") 0 ``` EA can also analyze escape of ϕ-node as well as its aliasing. Mutable ϕ-nodes would be eliminated even for a very tricky case as like: ```julia julia> code_typed((Bool,String,)) do cond, x # these allocation form multiple ϕ-nodes if cond ϕ2 = ϕ1 = Ref{Any}("foo") else ϕ2 = ϕ1 = Ref{Any}("bar") end ϕ2[] = x y = ϕ1[] # => x return y end 1-element Vector{Any}: CodeInfo( 1 ─ goto #3 if not cond 2 ─ goto #4 3 ─ nothing::Nothing 4 ┄ return x ) => Any ``` Combined with the alias analysis and ϕ-node handling above, allocations in the following "realistic" examples will be optimized: ```julia julia> # demonstrate the power of our field / alias analysis with realistic end to end examples # adapted from http://wiki.luajit.org/Allocation-Sinking-Optimization#implementation%5B abstract type AbstractPoint{T} end julia> struct Point{T} <: AbstractPoint{T} x::T y::T end julia> mutable struct MPoint{T} <: AbstractPoint{T} x::T y::T end julia> add(a::P, b::P) where P<:AbstractPoint = P(a.x + b.x, a.y + b.y); julia> function compute_point(T, n, ax, ay, bx, by) a = T(ax, ay) b = T(bx, by) for i in 0:(n-1) a = add(add(a, b), b) end a.x, a.y end; julia> function compute_point(n, a, b) for i in 0:(n-1) a = add(add(a, b), b) end a.x, a.y end; julia> function compute_point!(n, a, b) for i in 0:(n-1) a′ = add(add(a, b), b) a.x = a′.x a.y = a′.y end end; julia> compute_point(MPoint, 10, 1+.5, 2+.5, 2+.25, 4+.75); julia> compute_point(MPoint, 10, 1+.5im, 2+.5im, 2+.25im, 4+.75im); julia> @allocated compute_point(MPoint, 10000, 1+.5, 2+.5, 2+.25, 4+.75) 0 julia> @allocated compute_point(MPoint, 10000, 1+.5im, 2+.5im, 2+.25im, 4+.75im) 0 julia> compute_point(10, MPoint(1+.5, 2+.5), MPoint(2+.25, 4+.75)); julia> compute_point(10, MPoint(1+.5im, 2+.5im), MPoint(2+.25im, 4+.75im)); julia> @allocated compute_point(10000, MPoint(1+.5, 2+.5), MPoint(2+.25, 4+.75)) 0 julia> @allocated compute_point(10000, MPoint(1+.5im, 2+.5im), MPoint(2+.25im, 4+.75im)) 0 julia> af, bf = MPoint(1+.5, 2+.5), MPoint(2+.25, 4+.75); julia> ac, bc = MPoint(1+.5im, 2+.5im), MPoint(2+.25im, 4+.75im); julia> compute_point!(10, af, bf); julia> compute_point!(10, ac, bc); julia> @allocated compute_point!(10000, af, bf) 0 julia> @allocated compute_point!(10000, ac, bc) 0 ``` 2. `isdefined` check elimination This commit also implements a simple optimization to eliminate `isdefined` call by checking load-fowardability. This optimization may be especially useful to eliminate extra allocation involved with a capturing closure, e.g.: ```julia julia> callit(f, args...) = f(args...); julia> function isdefined_elim() local arr::Vector{Any} callit() do arr = Any[] end return arr end; julia> code_typed(isdefined_elim) 1-element Vector{Any}: CodeInfo( 1 ─ %1 = $(Expr(:foreigncall, :(:jl_alloc_array_1d), Vector{Any}, svec(Any, Int64), 0, :(:ccall), Vector{Any}, 0, 0))::Vector{Any} └── goto #3 if not true 2 ─ goto #4 3 ─ $(Expr(:throw_undef_if_not, :arr, false))::Any 4 ┄ return %1 ) => Vector{Any} ``` 3. load-forwarding for non-eliminable but analyzable mutables EA also allows us to forward loads even when the mutable allocation can't be eliminated but still its fields are known precisely. The load forwarding might be useful since it may derive new type information that succeeding optimization passes can use (or just because it allows simpler code transformations down the load): ```julia julia> code_typed((Bool,String,)) do c, s r = Ref{Any}(s) if c return r[]::String # adce_pass! will further eliminate this type assert call also else return r end end 1-element Vector{Any}: CodeInfo( 1 ─ %1 = %new(Base.RefValue{Any}, s)::Base.RefValue{Any} └── goto #3 if not c 2 ─ return s 3 ─ return %1 ) => Union{Base.RefValue{Any}, String} ``` --- Please refer to the newly added test cases for more examples. Also, EA's alias analysis already succeeds to reason about arrays, and so this EA-based SROA will hopefully be generalized for array SROA as well. 23 March 2022, 07:10:54 UTC
fc9c280 Fix performance bug for `*` with `AbstractQ` (#44615) 22 March 2022, 20:44:56 UTC
b91dd02 Merge pull request #44641 from JuliaLang/jn/44614 types: fix layout issues for Tuple 22 March 2022, 19:03:16 UTC
e9ba166 types: fix layout issues for Tuple Fix #44614 22 March 2022, 14:26:59 UTC
99bdd00 make fieldtype computation stable/pure 22 March 2022, 14:26:59 UTC
95da0d8 Add system info to start of testsuite. Profile: don't spawn profile listener on windows (#44639) 22 March 2022, 14:03:13 UTC
d3698a8 add doc string for `uppercase(::AbstractChar)` and friends (#44351) 22 March 2022, 13:33:47 UTC
7cde4be inference: override `InterConditional` result with `Const` carefully (#44668) I found that a tricky thing can happen when constant inference derives `Const`-result while non-constant inference has derived (non-constant) `InterConditional` result beforehand. In such a case, currently we discard the result with constant inference (since `!(Const ⊑ InterConditional)`), but we can achieve more accuracy by not discarding that `Const`-information, e.g.: ```julia julia> iszero_simple(x) = x === 0 iszero_simple (generic function with 1 method) julia> @test Base.return_types() do iszero_simple(0) ? nothing : missing end |> only === Nothing Test Passed ``` 22 March 2022, 02:44:08 UTC
cf999af Also trigger breakpoint on testset error (#44652) Ref https://github.com/JuliaLang/julia/issues/44635#issuecomment-1070807587 21 March 2022, 21:23:54 UTC
32b1305 More flexible test affinity setting (#44677) * More flexibly test affinity setting When running on a machine with `cpusets` applied, we are unable to assign CPU affinity to CPUs 1 and 2; we may be locked to CPUs 9-16, for example. So we must inspect what our current cpumask is, and from that select CPUs that we can safely assign affinity to in our tests. * Import `uv_thread_getaffinity` from `print_process_affinity.jl` * Call `uv_thread_getaffinity` only if `AFFINITY_SUPPORTED` * Fix a syntax error Co-authored-by: Takafumi Arakaki <aka.tkf@gmail.com> 21 March 2022, 20:33:24 UTC
1eae65b syntax: deparse function end (#44630) 21 March 2022, 19:56:25 UTC
28f58e7 doc: recommend `@spawn` over `@async` (#44667) 21 March 2022, 18:18:11 UTC
a6187ea Fallback implementation of sizehint! for AbstractDict (#44687) Fixes #44686 + additional haslength check + docs that sizehint! returns the collection. 21 March 2022, 18:17:43 UTC
7f29b70 More aggressive SROA considering uses of new_new_nodes (#44557) Co-authored-by: Keno Fischer <keno@juliacomputing.com> 21 March 2022, 17:05:48 UTC
c92ab5e improve codegen for assignments to globals (#44182) Co-authored-by: Jameson Nash <vtjnash@gmail.com> 21 March 2022, 13:09:13 UTC
ecf3558 MPFR: Fix `round(Integer, big(Inf))` (#44676) It also fixes `round(Integer, big(NaN))`. Solves #44662 21 March 2022, 12:06:29 UTC
feb7b77 Fix code coverage in specific path mode (#44625) 21 March 2022, 01:28:31 UTC
8d26196 Rollback task.sticky after running finalizers (#44665) 20 March 2022, 20:44:18 UTC
1b686b2 Clarify how to select items in a terminal MultiSelectMenu (#44649) 19 March 2022, 09:28:48 UTC
802f3a3 Also record overriden ipo effects in InferenceState (#44672) Otherwise the first time a new method is inferred, `typeinf_edge` will not respect the override, leading to lots of confusion. 19 March 2022, 03:03:10 UTC
ce26c0b Fix return_type model when run in toplevel context (#44670) Fixes the test failure observed in #44652. 19 March 2022, 00:37:25 UTC
85eaf4e Swiss tables design for `Dict` (#44513) * Improve performance of 'Dict' Co-authored-by: Simeon Schaub <simeondavidschaub99@gmail.com> 18 March 2022, 18:31:24 UTC
230e7f0 inference: minor refactor on `typeinf_edge` (#44666) Just to avoid constructing poorly-typed `Tuple` objects 18 March 2022, 16:39:52 UTC
3da4aed Improve performance of merging Dicts by using sizehint! (#44659) 18 March 2022, 12:18:17 UTC
a761cc0 [build] Allow using our self-built julia for whitespace check (#44658) * [build] Allow using our self-built julia for whitespace check This falls back to using the Julia just built in the current build tree to run the whitespace check, so that if someone tries to run `make test` it always works. * whitespace fix How ironic. 17 March 2022, 18:25:47 UTC
b9b2a3c fix regression introduced in #44231 (#44638) ref https://github.com/JuliaLang/julia/pull/44231#issuecomment-1069052669 17 March 2022, 12:03:15 UTC
7ce6a5e Add examples to LazyString docstrings (#44514) 17 March 2022, 11:40:12 UTC
1e64682 inference: follow up #44515, correctly encode `Effects.overlayed` effect (#44634) xref: <https://github.com/JuliaLang/julia/pull/44515#discussion_r827673198> 17 March 2022, 01:07:14 UTC
1823a4d Use `apple-m1` as the base march for `aarch64-apple-darwin` (#44347) Since the Apple devkits are all presumably returned to Apple at this point, it doesn't make sense to continue to build for the earlier a12 model, we should just build for the M1 explicitly. LLVM supports `-mcpu=apple-m1` since LLVM 13.0.0-rc1 [0]. Clang 13 (ships with Xcode 13) understands this, so it's a safe bet that this can be used with the C compiler that is generating this code as well. [0] https://github.com/llvm/llvm-project/commit/a8a3a43792472c9775c60fa79b9357033d47ce40 16 March 2022, 21:48:35 UTC
5ab5f98 [build] Silence non-fatal `gfortran: command not found` errors (#44554) We build without `gfortran` pretty regularly these days, let's make it slightly less annoying to build without a `gfortran` available on the path. 16 March 2022, 18:07:12 UTC
efa2430 Ignore potential errors during dbg-related object construction on Darwin. (#44637) 16 March 2022, 15:49:19 UTC
515a242 Improve inference for string operations (#44500) This reduces invalidations when loading packages that define new AbstractString types. 16 March 2022, 10:38:41 UTC
cc60657 Fix some inference failures in Base.require call graph (#44628) Discovered via JET. This also causes `make_aliases` to always return a `Vector{SimpleVector}` as its first argument. Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com> Co-authored-by: Jameson Nash <jameson@juliacomputing.com> Co-authored-by: Kristoffer Carlsson <kristoffer.carlsson@chalmers.se> 16 March 2022, 10:37:30 UTC
ac1d693 [LibGit2] Teach tests to be resilient to `init.defaultBranch` (#44629) If a user runs the tests with a `~/.gitconfig` that provides an `init.defaultBranch` that is not `master`, our tests fail. Let's adjust to the user's configuration as appropriate. We'll also rename this to `default_branch` to signify that it may not be called `master` anymore. 16 March 2022, 00:53:37 UTC
afc5bed Factor out active ip tracking from inference loop (#44603) 15 March 2022, 21:59:19 UTC
b4ab6ef Merge pull request #44228 from JuliaLang/sk/nbsp - replace non-breaking spaces with plain spaces - use only UNIX line endings (\n) - end text files with single newlines - rewrite whitespace checks in Julia & check for: - trailing non-ASCII whitespace - non-breaking spaces anywhere - non-UNIX line endings - missing trailing newline 15 March 2022, 21:52:28 UTC
2d34539 doc: provide more information on unsafe pointer APIs (#43961) 15 March 2022, 20:42:39 UTC
ee6115b Set `USECLANG` and `USEGCC` based on the actual compilers used (#44616) 15 March 2022, 18:35:44 UTC
ca17788 pcre: remove nthreads constant dependency (#44542) This appears to be the only remaining place we use the nthreads variable to pre-initialize a shared array. Let us fix that code pattern now, since we know globals are already acquire/release. 15 March 2022, 16:52:48 UTC
b75a067 follow up #44404, remove duplicated `tmeet` definition (#44617) 15 March 2022, 16:31:45 UTC
e082917 Make UseRefs more memory efficient (#44495) With #44494, this cuts about 22M allocations (out of 59M) from the compiler benchmark in #44492. Without #44494, it still reduces the number of allocations, but not as much. This was originally optimized in 100666be80f37f79ee709137bd7425e98c33afdd, but the behavior of our compiler has changed to allow inling the Tuple{UseRef, Int} into the outer struct, forcing a reallocation on every iteration. 15 March 2022, 16:29:23 UTC
5e4abce Merge pull request #44515 from JuliaLang/avi/partialeval `AbstractInterpreter`: enable selective concrete-evaluation for external `AbstractInterpreter` with overlayed method table 15 March 2022, 09:26:33 UTC
da7676d make `Base.return_types` interface similar to `code_typed` (#44533) Especially, it should be more consistent with the other reflection utilities defined in reflection.jl if the optional `interp::AbstractInterpreter` argument is passed as keyword one. 15 March 2022, 04:29:49 UTC
c0c14b6 `AbstractInterpreter`: enable selective pure/concrete eval for external `AbstractInterpreter` with overlayed method table Built on top of #44511 and #44561, and solves <https://github.com/JuliaGPU/GPUCompiler.jl/issues/309>. This commit allows external `AbstractInterpreter` to selectively use pure/concrete evals even if it uses an overlayed method table. More specifically, such `AbstractInterpreter` can use pure/concrete evals as far as any callees used in a call in question doesn't come from the overlayed method table: ```julia @test Base.return_types((), MTOverlayInterp()) do isbitstype(Int) ? nothing : missing end == Any[Nothing] Base.@assume_effects :terminates_globally function issue41694(x) res = 1 1 < x < 20 || throw("bad") while x > 1 res *= x x -= 1 end return res end @test Base.return_types((), MTOverlayInterp()) do issue41694(3) == 6 ? nothing : missing end == Any[Nothing] ``` In order to check if a call is tainted by any overlayed call, our effect system now additionally tracks `overlayed::Bool` property. This effect property is required to prevents concrete-eval in the following kind of situation: ```julia strangesin(x) = sin(x) @overlay OverlayedMT strangesin(x::Float64) = iszero(x) ? nothing : cos(x) Base.@assume_effects :total totalcall(f, args...) = f(args...) @test Base.return_types(; interp=MTOverlayInterp()) do # we need to disable partial pure/concrete evaluation when tainted by any overlayed call if totalcall(strangesin, 1.0) == cos(1.0) return nothing else return missing end end |> only === Nothing ``` 15 March 2022, 04:29:40 UTC
b2890d5 effects: complements #43852, implement effect override mechanisms (#44561) The PR #43852 missed to implement the mechanism to override analyzed effects with effect settings annotated by `Base.@assume_effects`. This commits adds such an mechanism within `finish(::InferenceState, ::AbstractInterpreter)`, just after inference analyzed frame effect. Now we can do something like: ```julia Base.@assume_effects :consistent :effect_free :terminates_globally consteval( f, args...; kwargs...) = f(args...; kwargs...) const ___CONST_DICT___ = Dict{Any,Any}(:a => 1, :b => 2) @test fully_eliminated() do consteval(getindex, ___CONST_DICT___, :a) end ``` 15 March 2022, 02:04:35 UTC
c38e429 implement `setproperty!` for modules (#44231) This replaces #44137. As discussed on triage, instead of supporting modules in `setfield!`, this adds two new builtins `getglobal` and `setglobal!` explicitly for reading and modifying module bindings. We should probably consider `getfield(::Module, ::Symbol)` to be soft-deprecated, but I don't think we want to add any warnings since that will likely just annoy people. Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 14 March 2022, 23:33:06 UTC
f750080 update libuv autoconf files [NFC] (#44588) Fix #44585 14 March 2022, 22:04:36 UTC
b07b5ba whitespace check: rewrite in Julia, add checks This now checks for: - trailing non-ASCII whitespace - non-breaking spaces anywhere - non-UNIX line endings - trailing blank lines - no trailing newline Git can't handle this, largely because whether it interprets files as UTF-8 or Latin-1 depends on how system libraries that it uses for regex matching are compiled, which is inconsistent and hard to fix. The end of file checks are also quite awkard and inefficient to implement with Git and shell scripting. Julia is fast and lets us present results clearly. 14 March 2022, 21:27:53 UTC
100a741 whitespace: replace non-breaking space => space 14 March 2022, 21:27:53 UTC
e66bfa5 whitespace: use only UNIX line endings (\n) 14 March 2022, 21:27:53 UTC
3903fa5 whitespace: end text files with single newlines 14 March 2022, 21:27:53 UTC
529ac51 avoid warning about macro redefinition on Windows + clang: (#44412) 14 March 2022, 11:56:41 UTC
e7a2adb follow up #44608, add missing reference (#44609) 14 March 2022, 10:30:01 UTC
2e63293 NEWS.md: Fix PR number for `@inline/@noinline` annotations, fixes #44458 (#44608) 14 March 2022, 06:36:09 UTC
98b4b06 CI (Buildkite): ignore any private keys, regardless of where in the repository they are found (#44597) 13 March 2022, 04:41:40 UTC
0791aef Refactor JIT engine to make it friendlier to multiple contexts (#44573) 13 March 2022, 03:34:22 UTC
ff88fa4 inference: refine PartialStruct lattice tmerge (#44404) * inference: fix tmerge lattice over issimpleenoughtype Previously we assumed only union type could have complexity that violated the tmerge lattice requirements, but other types can have that too. This lets us fix an issue with the PartialStruct comparison failing for undefined fields, mentioned in #43784. * inference: refine PartialStruct lattice tmerge Be more aggressive about merging fields to greatly accelerate convergence, but also compute anyrefine more correctly as we do now elsewhere (since #42831, a121721f975fc4105ed24ebd0ad1020d08d07a38) Move the tmeet algorithm, without changes, since it is a precise lattice operation, not a heuristic limit like tmerge. Close #43784 13 March 2022, 00:09:16 UTC
ceec252 CI (`Create Buildbot Statuses`): add `linux32` to the list (#44594) 13 March 2022, 00:00:50 UTC
b49a1b4 Fix llvm powi intrinsic calls in fastmath.jl (#44580) 12 March 2022, 19:35:38 UTC
24d5268 Remove number / vector (#44358) * Remove number / vector * Fix test 12 March 2022, 19:29:50 UTC
e6c1525 extend the API for `LazyString` a bit (#44581) 12 March 2022, 19:02:00 UTC
2cba553 Create a table for badges in `README` (#44569) * Create a table for badges in README * Convert README table from Markdown to HTML 12 March 2022, 17:58:30 UTC
258ddc0 fix precision issue in Float64^Float64. (#44529) * improve accuracy for x^-3 12 March 2022, 08:01:25 UTC
3c34dac Bump libblastrampoline to v5.1.0 (#44574) This should fix some serious issues with calling {c,z}dot{c,u} on Windows x86_64. See [0] for more details, and [1] for a test case. [0] https://github.com/JuliaLinearAlgebra/libblastrampoline/commit/082924837dec5df66eb08e19aec0bf81ac78c3be [1] https://github.com/JuliaLinearAlgebra/libblastrampoline/commit/2ef456212b4765e97d9557f35adc2c52a3aac346 12 March 2022, 07:14:23 UTC
a25c25a libuv: bump version to v2-1.44.1 (#44543) Includes several fixes: https://github.com/JuliaLang/libuv/compare/3a63bf71de62c64097989254e4f03212e3bf5fc8...c2d8a538b79e135176c2b0653e04d287aada2891 12 March 2022, 07:00:23 UTC
d291c8b [Make.inc] Require C11 standard (#44556) * [Make.inc] Require C11 standard Julia effectively requires C11 because of the use of `_Atomic`. This is shown when compiling with `-pedantic`. * Add missing header file needed for `ssize_t` * Change C standard also in `contrib/julia-config.jl` 12 March 2022, 02:27:48 UTC
6be86a3 Fix a concurrency bug in `iterate(::Dict)` (#44534) 12 March 2022, 00:59:07 UTC
5ec1f9f 🤖 Bump the Pkg stdlib from 544bb894 to 53cefb5c (#44544) Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 11 March 2022, 21:46:16 UTC
45ab664 `range` uses `TwicePrecision` when possible (part 2) (#44528) 11 March 2022, 20:34:33 UTC
f5d1557 [LLVM/ABI] Don't pass null pointer to byVal attribute (#44555) 11 March 2022, 17:10:29 UTC
e90dec9 [`master` branch] CI (Buildkite): remove the `.buildkite` folder (#43053) * [`master` branch] CI (Buildkite): remove the `.buildkite` folder * Update .gitignore Co-authored-by: Elliot Saba <staticfloat@gmail.com> 10 March 2022, 23:54:29 UTC
8076517 [Makefile] Fix codesign of libjulia when installing it on macOS (#44510) * [Makefile] Fix codesign of libjulia when installing it on macOS * Add shell sript for codesigning and use it in Makefile 09 March 2022, 19:46:38 UTC
80346c1 Put off major collections to improve GC times. (#44215) * Updated GC Heuristics to avoid a full GC unless absolutely necessary. This helps with https://github.com/JuliaLang/julia/issues/40644 and other programs which suffer from non-productive full collections. 09 March 2022, 17:10:59 UTC
4d04294 [libblastrampoline] Ugrade to v5.0.2 (#44531) This includes CBLAS workarounds for `cblas_sdot` and `cblas_ddot` which are necessary now that https://github.com/JuliaLang/julia/pull/44271 uses these symbols instead of just `sdot_` and `ddot_` directly. 09 March 2022, 16:13:00 UTC
6e8804b follow up #44448, correct `findall`/`findsup` for `OverlayMethodTable` (#44511) - respect world range of failed lookup into `OverlayMethodTable`: <https://github.com/JuliaLang/julia/pull/44448#discussion_r821220641> - fix calculation of merged valid world range: <https://github.com/JuliaLang/julia/pull/44448#discussion_r821220108> - make `findsup` return valid `WorldRange` unconditionally, and enable more strict world validation within `abstract_invoke`: <https://github.com/JuliaLang/julia/pull/44448#discussion_r821221947> - fix the default `limit::Int` value of `findall` 09 March 2022, 07:34:11 UTC
cd704d2 export CanonicalIndexError (#44524) 09 March 2022, 07:22:11 UTC
cb2fa5d [CompilerSupportLibraries_jll] Update to v0.5.2 (#44487) The main difference since previous version should be the libraries for aarch64-apple-darwin, which are based on a more recent version of the GCC fork for this platform. There are a couple of notable ABI changes here: * `libgcc_s` is now called `libgcc_s.1.1.dylib` instead of `libgcc_s.2.dylib` * there is now `libquadmath.0.dylib` for this platform, which was missing before. 09 March 2022, 01:44:19 UTC
f731c38 ensure invoke kwargs work on Types (#44464) Fix #44227 08 March 2022, 20:31:54 UTC
c591bf2 process: ensure uvfinalize and _uv_close_cb are synchronized (#44476) There appeared to be a possibility they could race and the data field might already be destroyed before we reached the close callback, from looking at the state of the program when reproducing #44460. This is because the uv_return_spawn set the handle to NULL, which later can cause the uvfinalize to exit early (if the finalizer gets run on another thread, since we have disabled finalizers on our thread). Then the GC can reap the julia Process object prior to uv_close cleaning up the object. We solve this by calling disassociate_julia_struct before dropping the reference to the handle. But then we also fully address any remaining race condition by having uvfinalize acquire a lock also. The uv_return_spawn callback also needs to be synchronized with the constructor, since we might have arrived there before we finished allocating the Process struct here, leading to missed exit events. Fixes #44460 08 March 2022, 20:31:33 UTC
061d248 apply increased maximum file descriptor limit to all unix (#44491) Implemented in #41044, _POSIX_C_SOURCE is not defined by all platforms (for example, Apple), so it was not getting executed there. 08 March 2022, 20:28:08 UTC
88062ea [Base64] making padding optional (#44503) The pad character `=` is required in base64 encoding, but not in decoding. Padding characters are not needed to correctly decode: https://en.wikipedia.org/wiki/Base64#Output_padding This PR makes it possible to decode base64-encoded strings/streams without padding, matching the behavior in V8 in data urls. (The [official spec](https://datatracker.ietf.org/doc/html/rfc4648#section-4) for Base64 states that padding is required for base64-encoding, but it does not specify a requirement for decoding.) 08 March 2022, 18:45:34 UTC
02abca3 remove deprecation warning for `@_inline_meta` (#44516) 08 March 2022, 18:24:08 UTC
03433a2 fix negative numbers to powers >2^64 (#44456) *fix negative numbers to powers >2^64 08 March 2022, 16:28:07 UTC
dc45d77 Do not allocate so many arrays in optimizer hot path (#44492) Now it's 20% faster. 08 March 2022, 00:23:35 UTC
c4409c5 Try to speed up LateLowerGCFrame::ComputeLiveness (#44463) Co-authored-by: Jameson Nash<vtjnash@gmail.com> Co-authored-by: Oscar Smith <oscardssmith@gmail.com> 08 March 2022, 00:19:23 UTC
b7b46af correct phinode definition (#44505) 07 March 2022, 22:01:35 UTC
811e534 optimizer: minor refactor on `ir_inline_unionsplit!` (#44482) Suggested at: <https://github.com/JuliaLang/julia/pull/44445#r820024248> 07 March 2022, 04:40:15 UTC
9a48dc1 `AbstractInterpreter`: implement `findsup` for `OverlayMethodTable` (#44448) 07 March 2022, 04:16:37 UTC
cfb0d46 Fix intermittent `threaded loop executed in order` test warning (#44479) 07 March 2022, 02:30:53 UTC
3bcab39 Fix missing T_size->getSizeTy in llvm-ptls (#44484) 06 March 2022, 20:42:21 UTC
487757b Add per-TypeName max methods mechanism (#44426) Allows overriding the max-methods default for specific generic functions that are known to benefit from a different value of max methods. Also replaces the one case in Base where we're already overriding max methds by this new mechanism. 06 March 2022, 13:17:44 UTC
d971465 Fix or suppress some noisy tests 🏌️‍♂️ (#44444) 06 March 2022, 12:59:06 UTC
610fc20 [RemoveAddrspaces] make MappedTypes non-static (#44453) 06 March 2022, 05:02:44 UTC
d7d8521 [JuliaLICM] Use `getLoopAnalysisUsage` (#44462) 06 March 2022, 05:02:16 UTC
db28215 Remove various int types from optimization passes (#44468) 05 March 2022, 23:12:16 UTC
111525d Document simple ASAN build (#44475) 05 March 2022, 22:50:36 UTC
2349f0a optimizer: improve inlining algorithm robustness (#44445) Explicitly check the conditions assumed by `ir_inline_item!`/`ir_inline_unionsplit!` within the call analysis phase. This commit also includes a small refactor to use same code for handling both concrete and abstract callsite, and it should slightly improve the handling of abstract, constant-prop'ed callsite. 05 March 2022, 00:21:59 UTC
c3d7edc Fix htable cleanup (#44446) This htable was allocated conditionally, so the cleanup must be too. Co-authored by: Jameson Nash <jameson@juliacomputing.com> 04 March 2022, 18:36:58 UTC
5db280d Create debuginfo once per module (#43770) 04 March 2022, 18:36:24 UTC
b63ae3b Forbid InterConditional in PartialStruct fields (#44438) Alternative to #44437. 04 March 2022, 06:04:42 UTC
back to top