https://github.com/JuliaLang/julia

sort by:
Revision Author Date Message Commit Date
7510def audit inbounds for arrays Remove some unnecessary and incorrect inbounds annotations. Fix #46879 26 September 2022, 08:52:25 UTC
24cb92d use `invokelatest` to call `REPL.active_module` (#46866) REPL_MODULE_REF might be populated during execution, in which case we won't be able to see REPL methods yet. 23 September 2022, 06:14:47 UTC
ea9914e add simple test cases for [post-]domination analysis (#46860) 22 September 2022, 17:30:59 UTC
45623a8 staticdata: avoid needing unaligned loads, support 64-bit images (#46683) No functional changes intended here. 22 September 2022, 16:33:49 UTC
15f8fad Uncomment out bitset test (#46847) 22 September 2022, 11:10:48 UTC
a959ed8 Fix small logic bug in finalizer inlining Found while testing bigger examples. Fixes the logic introduced in #46651 22 September 2022, 09:29:13 UTC
e636342 Add assume_fatal_throw optimizer option (#46856) This option frees the optimizer from having to prove nothrow in order to move certain side effects across call sites. It is currently enabled in finalizer inlining, but there may be opportunities to use it elsewhere in the future, as well as potentially plumbing it down to LLVM. The intended use case is not in the main compilation pipeline, but rather for alternative compilation modes where thrown errors are fatal and the state of the heap can not be observed after a thrown error. 22 September 2022, 09:28:25 UTC
70fa9b1 Update to 14.0.6+0 (#46842) 22 September 2022, 06:15:36 UTC
892f76e Minor cleanup to follow up 45062 (#46832) 22 September 2022, 04:32:15 UTC
62ac26a inlining: relax `finalizer` inlining control-flow restriction (#46651) Eager `finalizer` inlining (#45272) currently has a restriction that requires all the def/uses to be in a same basic block. This commit relaxes that restriction a bit by allowing def/uses to involve control flow when all of them are dominated by a `finalizer` call to be inlined, since in that case it is safe to insert the body of `finalizer` at the end of all the def/uses, e.g. ```julia const FINALIZATION_COUNT = Ref(0) init_finalization_count!() = FINALIZATION_COUNT[] = 0 get_finalization_count() = FINALIZATION_COUNT[] @noinline add_finalization_count!(x) = FINALIZATION_COUNT[] += x @noinline Base.@assume_effects :nothrow safeprint(io::IO, x...) = (@nospecialize; print(io, x...)) mutable struct DoAllocWithFieldInter x::Int end function register_finalizer!(obj::DoAllocWithFieldInter) finalizer(obj) do this add_finalization_count!(this.x) end end function cfg_finalization3(io) for i = -999:1000 o = DoAllocWithFieldInter(i) register_finalizer!(o) if i == 1000 safeprint(io, o.x, '\n') elseif i > 0 safeprint(io, o.x) end end end let src = code_typed1(cfg_finalization3, (IO,)) @test count(isinvoke(:add_finalization_count!), src.code) == 1 end let init_finalization_count!() cfg_finalization3(IOBuffer()) @test get_finalization_count() == 1000 end ``` To support this transformation, the domtree code also gains the ability to represent post-dominator trees, which is generally useful. 21 September 2022, 22:59:37 UTC
72be01b Insert bitcast after any additional phi nodes (#46854) Adjust bitcast insertion point to after any phi nodes 21 September 2022, 22:10:49 UTC
ff62f84 🤖 Bump the NetworkOptions stdlib from 4d3df64 to 8ce1e10 (#46853) Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 21 September 2022, 21:50:07 UTC
2bd5a44 Track JITLink-allocated bytes (#46823) * Track JITLink-allocated bytes * Address review formatting 21 September 2022, 17:49:24 UTC
d093a1a Remove unused optimizer params (#46848) 21 September 2022, 15:36:21 UTC
d4f0567 dump: implement cycle handling in has_backedge_to_worklist (#46749) 21 September 2022, 13:01:33 UTC
ed01ee0 ccall: handle Union appearing as a field-type without crashing (#46787) We disallow union as the direct type, so perhaps we should disallow it as a field-type also, but since we do allow references in those cases typically, we will allow this also. Also DRY the emit_global code, since it had bit-rotted relative to the usual code path through emit_globalref (and apparently could still be run though for handling the first argument to cfunction). Fix #46786 21 September 2022, 11:27:34 UTC
bb7c7eb [GCChecker] report FunctionDecl and type for missing JL_NOTSAFEPOINT calls (#46834) In C++, some calls are implicit, which makes the call alone ambiguous and the message unclear. This helps clarify it. 21 September 2022, 11:27:15 UTC
91d8e38 inference: remove allocation hot-spot exposed by Profile.Allocs examination (#46843) This Union{Pair,Nothing} accounted for several % of total inference allocations, and might stack-overflow on very large numbers of basic blocks with very unusual structures. 21 September 2022, 11:26:57 UTC
d7158dc Update interfaces.md (#46833) AbstractArrays have never been required to be mutable, and we have many subtypes of `AbstractArray` in `Base` and `LinearAlgebra` that do not implement `setindex!` since they are immutable, or only implement it for a subset of their indices (e.g. `CartesianIndices`, the various range types, `Symmetric`, `Hermitian`, `Diagonal`, ). There is also a lot of hope and plans for more immutable, dynamic array support from Base, and of course a rich set of immutable arrays out there in the package ecosystem which do not have `setindex!` 21 September 2022, 01:28:02 UTC
ffa76f9 consistency on typemax and typemin docs (#46827) * consistency on typemax and typemin docs The `typemax` and `typemin` docs isn't consistent with each other on its examples and `see also` section (see reasons below). While this isn't an issue when looking up the function with `help>` to work with integers, for floating-point types, its a big deal because: - On the `typemax` examples, there is a very good example there with a great comment, pointing users on to look into `floatmax`, if `typemax` doesn't serves them; but the `typemin` doesn't have this - which isn't great, since both `typemax` and `typemin` have great use. - The `see also` section on `typemax` point users to other available functions which might prove or introduce other points to consider if `typemax` isn't what they're looking for; for `typemin`, this isn't present. I provided examples on integers, just so the function isn't thought of like working for only floating points. Moreover, I feel like the current docs were written assuming users would always lookup `typemin` and `typemax` in `help>`, before using anyone of them. Most time this is true, but I think it's best not to assume. 21 September 2022, 01:26:00 UTC
67f994c Fix SROA miscompile in large functions (#46819) * Fix SROA miscompile in large functions During the development of #46775, we saw a miscompile in the compiler, specifically, we saw SROA failing to provide a proper PHI nest. The root cause of this turned out to be an incorrect dominance query. In particular, during incremental compaction, the non-compacted portion of the IncrementalCompact cfg is allocated, but not valid, so we must not query it for basic block information. Unfortunately, I don't really have a good test case for this. This code has grown mostly organically for a few years, and I think it's probably overdue for an overhaul. * optimizer: address TODO for computing `joint_effects` more efficiently Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com> 20 September 2022, 23:11:31 UTC
caf544b Deduplicate lifted PHI node edges (#46662) * Deduplicate lifted PHI node edges * Add gc lowering test * Simplify and clean up test case * Remove assertion for now 20 September 2022, 17:02:56 UTC
276af84 use native Julia code in round example (#46841) 20 September 2022, 12:57:34 UTC
89c4a2a Merge pull request #46796 from JuliaLang/tb/libuv Expose constrained memory limits and have the GC use them. 20 September 2022, 07:05:38 UTC
b6d2434 set number of openblas threads to 1 while precompiling (#46792) 20 September 2022, 06:07:35 UTC
417cdca clear info on the exponent function (#46815) Co-authored-by: Daniel Karrasch <daniel.karrasch@posteo.de> 20 September 2022, 03:38:18 UTC
88ec96a compiler: some minor NFC clean-ups (#46835) 20 September 2022, 00:21:13 UTC
d354662 Adapt GC to new APIs. 19 September 2022, 20:28:53 UTC
00f8938 Expose constrained memory as Sys.(total|free)_memory; add Sys.physical_(total_free)_memory. 19 September 2022, 20:28:53 UTC
22f8faf Bump libuv. 19 September 2022, 20:25:20 UTC
8af6731 typeassert `get` from `IOContext` (#46828) 19 September 2022, 13:13:19 UTC
eea2ca7 elaborate on how to check `:compact` on `IOContext` (#46826) * elaborate on how to check `:compact` on `IOContext` Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com> 19 September 2022, 11:42:03 UTC
21e8c7c Merge pull request #46781 from JuliaLang/kc/output_prompts Redo of "Add ability to add output prefixes to the REPL output and use that to implement an IPython mode" 19 September 2022, 08:16:31 UTC
16e9f4b follow up #46775, add missing annotations (#46817) 19 September 2022, 01:35:40 UTC
f794bdd follow up #46799, add test case for `CachedMethodTable` (#46818) 18 September 2022, 10:14:10 UTC
86e0c6a fix typo on TwicePrecision docs (#46813) 18 September 2022, 01:00:01 UTC
433b11f NFC: simplify the default `limit` setting of `Core.Compiler.findall` (#46809) Use `limit=-1` instead of `limit=Int(typemax(Int32))`. 18 September 2022, 00:49:25 UTC
b3f25d7 inlining: Also apply statement effects when declining to inline (#46775) * inlining: Also apply statement effects when declining to inline When inlining, we already determine what the effects for all the different cases are, so that we can apply appropriate statement flags on each of the edges. However, if for some reason we decided to decline to inline, we weren't making use of this information. Fix that. * make it work. Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com> 17 September 2022, 22:01:55 UTC
b6cabf3 Use more of the actual inliner in finalizer inlining (#46753) * Use more of the actual inliner in finalizer inlining Currently the special-case inliner for finalizer generated incorrect code for unmatched sparams (which we had a test for, but which was unfortunately broken) and varargs (which we did not have a test for). Of course, we handle these cases correctly in actual inlining, so do some light refactoring to share more code between the two inlining paths. * Update base/compiler/ssair/inlining.jl Co-authored-by: Ian Atol <ian.atol@juliacomputing.com> Co-authored-by: Ian Atol <ian.atol@juliacomputing.com> 17 September 2022, 22:01:06 UTC
defc396 Disable MSYS2's path munging for `stringreplace` (#46803) This was causing our rewriting of the loader's RPATH emulation to fail after running `make install`, as MSYS2 was rewriting our list that looks like: ``` ../bin/libgcc_s_seh-1.dll:../bin/libopenlibm.dll:@../bin/libjulia-internal.dll:@../bin/libjulia-codegen.dll: ``` Into one that looked like: ``` ..\bin\libgcc_s_seh-1.dll;..\bin\libopenlibm.dll;@..\bin\libjulia-internal.dll;@..\bin\libjulia-codegen.dll; ``` By exporting `MSYS2_ARG_CONV_EXCL='*'` for all `stringreplace` invocations, we dodge this issue, as documented by MSYS2 [0]. [0] https://www.msys2.org/wiki/Porting/#filesystem-namespaces 17 September 2022, 17:36:26 UTC
c165aeb REPL docs: Document existing ^U keybind (#46811) This keybinding currently exists in Julia and is functional, but it wasn't mentioned in the manual. 17 September 2022, 12:31:36 UTC
1843ea3 Typo error on REPL section (#46807) 17 September 2022, 05:49:08 UTC
2ef4aba Changes to support LLVM15 compilation (#46788) 17 September 2022, 05:47:13 UTC
e24dd3b inference: make `limit::Int` as a caching key of `CachedMethodTable` (#46799) Sometimes `Core.Compiler.findall(::Type, ::CachedMethodTable; limit::Int)` is called with different `limit` setting (in particularity `return_type_tfunc` calls it with `limit=-1`). The query should return different results given different `limit` settings, so its cache should also have different keys per different `limit` settings. fix #46722 17 September 2022, 02:59:15 UTC
81f6c23 Windows build improvements (#46793) * Include unistd.h to silence compilation warning. * Error when running in a MSYS shell. 16 September 2022, 19:52:42 UTC
260e986 Add julia pass pipeline to opt (#46191) * Use NewPM for optimization unless ASAN is in effect * Disable NewPM by default * Add julia pass pipeline to opt * Update llvm devdocs 16 September 2022, 16:18:04 UTC
54b4a53 add an ipython mode on top of the output prefix functionality 16 September 2022, 14:01:46 UTC
03ed550 Remove unnecessary `reducedim_init` specialization (#46777) 16 September 2022, 10:50:19 UTC
a7bef77 Make the "system image too large" error message more descriptive (#46570) 16 September 2022, 09:46:16 UTC
8c00e17 Fix `mapreduce` on `AdjOrTrans` (#46605) Co-authored-by: Daniel Karrasch <Daniel.Karrasch@posteo.de> Co-authored-by: Daniel Karrasch <Daniel.Karrasch@posteo.de> Co-authored-by: Martin Holters <martin.holters@hsu-hh.de> 16 September 2022, 09:43:59 UTC
174b893 doc: guard release branch regex with ^...$ (#46647) 16 September 2022, 09:41:22 UTC
0fabe54 Help inference of uninferred callers of `read(::IO, ::Type{String})` (#46577) 15 September 2022, 15:29:38 UTC
3d3f9ae add ability to add an output prefix to the REPL output 15 September 2022, 14:48:29 UTC
4026246 Add effect modeling for Core.compilerbarrier (#46772) The compiler barrier itself doesn't have any effects, though of course by pessimizing type information, it may prevent the compiler from discovering effect information it would have otherwise obtained. Nevertheless, particularly the weaker barriers like `:const` and `:conditional` should not, by themselves taint any effects. 15 September 2022, 14:46:08 UTC
00ea165 Cache binding pointer in GlobalRef (#46729) On certain workloads, profiling shows a surprisingly high fraction of inference time spent looking up bindings in modules. Bindings use a hash table, so they're expected to be quite fast, but certainly not zero. A big contributor to the problem is that we do basically treat it as zero, looking up bindings for GlobalRefs multiple times for each statement (e.g. in `isconst`, `isdefined`, to get the types, etc). This PR attempts to improve the situation by adding an extra field to GlobalRef that caches this lookup. This field is not serialized and if not set, we fallback to the previous behavior. I would expect the memory overhead to be relatively small, since we do intern GlobalRefs in memory to only have one per binding (rather than one per use). # Benchmarks The benchmarks look quite promising. Consider this artifical example (though it's actually not all that far fetched, given some of the generated code we see): ``` using Core.Intrinsics: add_int const ONE = 1 @eval function f(x, y) z = 0 $([:(z = add_int(x, add_int(z, ONE))) for _ = 1:10000]...) return add_int(z, y) end g(y) = f(ONE, y) ``` On master: ``` julia> @time @code_typed g(1) 1.427227 seconds (1.31 M allocations: 58.809 MiB, 5.73% gc time, 99.96% compilation time) CodeInfo( 1 ─ %1 = invoke Main.f(Main.ONE::Int64, y::Int64)::Int64 └── return %1 ) => Int64 ``` On this PR: ``` julia> @time @code_typed g(1) 0.503151 seconds (1.19 M allocations: 53.641 MiB, 5.10% gc time, 33.59% compilation time) CodeInfo( 1 ─ %1 = invoke Main.f(Main.ONE::Int64, y::Int64)::Int64 └── return %1 ) => Int64 ``` I don't expect the same speedup on other workloads, but there should be a few % speedup on most workloads still. # Future extensions The other motivation for this is that with a view towards #40399, we will want to more clearly define when bindings get resolved. The idea here would then be that binding resolution replaces generic `GlobalRefs` by GlobalRefs with a set binding cache, and any unresolved bindings would be treated conservatively by inference and optimization. 15 September 2022, 14:45:47 UTC
6bbc006 Add LLVM pipeline tests (#46542) * Add LLVM pipeline tests * Create per-pipeline optimization tests * Actually run the tests, drop unnecessary output * Move to lit tests instead of julia tests * Apply suggestions from code review `=` -> `in` Co-authored-by: Valentin Churavy <vchuravy@users.noreply.github.com> Co-authored-by: Valentin Churavy <vchuravy@users.noreply.github.com> 15 September 2022, 14:36:24 UTC
5e3e58e Revert "Add ability to add output prefixes to the REPL output and use that to implement an IPython mode (#46474)" (#46780) This reverts commit e1188455456035ff6a80ed20e424aa5c8ebf437d. 15 September 2022, 14:13:17 UTC
e118845 Add ability to add output prefixes to the REPL output and use that to implement an IPython mode (#46474) 15 September 2022, 12:24:25 UTC
6557542 Also merge var with unchanged bounds. (#46757) * Also merge var with unchanged bounds. The current `env` might not be valid if the var's bounds get fixed by another Unions decision. * Replace `v->var->lb` with `simple_meet` * Remove the unneeded NUll check. Co-Authored-By: Jameson Nash <vtjnash+github@gmail.com> 15 September 2022, 11:43:57 UTC
aae8c48 Specialize `inv` for cholesky of `Diagonal` (#46763) 15 September 2022, 10:30:02 UTC
997e336 inference: fixes and improvements for backedge computation (#46741) This commit consists of the following changes: * inference: setup separate functions for each backedge kind Also changes the argument list so that they are ordered as `(caller, [backedge information])`. * inference: fix backedge computation for const-prop'ed callsite With this commit `abstract_call_method_with_const_args` doesn't add backedge but rather returns the backedge to the caller, letting the callers like `abstract_call_gf_by_type` and `abstract_invoke` take the responsibility to add backedge to current context appropriately. As a result, this fixes the backedge calculation for const-prop'ed `invoke` callsite. For example, for the following call graph, ```julia foo(a::Int) = a > 0 ? :int : println(a) foo(a::Integer) = a > 0 ? "integer" : println(a) bar(a::Int) = @invoke foo(a::Integer) ``` Previously we added the wrong backedge `nothing, bar(Int64) from bar(Int64)`: ```julia julia> last(only(code_typed(()->bar(42)))) String julia> let m = only(methods(foo, (UInt,))) @eval Core.Compiler for (sig, caller) in BackedgeIterator($m.specializations[1].backedges) println(sig, ", ", caller) end end Tuple{typeof(Main.foo), Integer}, bar(Int64) from bar(Int64) nothing, bar(Int64) from bar(Int64) ``` but now we only add `invoke`-backedge: ```julia julia> last(only(code_typed(()->bar(42)))) String julia> let m = only(methods(foo, (UInt,))) @eval Core.Compiler for (sig, caller) in BackedgeIterator($m.specializations[1].backedges) println(sig, ", ", caller) end end Tuple{typeof(Main.foo), Integer}, bar(Int64) from bar(Int64) ``` * inference: make `BackedgePair` struct * add invalidation test for `invoke` call * optimizer: fixup inlining backedge calculation Should fix the following backedge calculation: ```julia julia> m = which(unique, Tuple{Any}) unique(itr) @ Base set.jl:170 julia> specs = collect(Iterators.filter(m.specializations) do mi mi === nothing && return false return mi.specTypes.parameters[end] === Vector{Int} # find specialization of `unique(::Any)` for `::Vector{Int}` end) Any[] julia> Base._unique_dims([1,2,3],:) # no existing callers with specialization `Vector{Int}`, let's make one 3-element Vector{Int64}: 1 2 3 julia> mi = only(Iterators.filter(m.specializations) do mi mi === nothing && return false return mi.specTypes.parameters[end] === Vector{Int} # find specialization of `unique(::Any)` for `::Vector{Int}` end) MethodInstance for unique(::Vector{Int64}) julia> mi.def unique(itr) @ Base set.jl:170 julia> mi.backedges 3-element Vector{Any}: Tuple{typeof(unique), Any} MethodInstance for Base._unique_dims(::Vector{Int64}, ::Colon) MethodInstance for Base._unique_dims(::Vector{Int64}, ::Colon) # <= now we don't register this backedge ``` 15 September 2022, 06:56:19 UTC
94c3a15 Improve nothrow analysis of :new with missing sparam (#46754) Similar to #46693, but for :new, rather than getfield. Unfortunately, this is somewhat limited as we don't really have the ability to encode type equality constraints in the lattice. In particular, it would be nice to analyze: ``` struct Foo{T} x::T Foo(x::T) where {T} = new{T}(x) end ``` and be able to prove this nothrow. If it's really important, we could probably pattern match it, but for the moment, this is not easy to do. Nevertheless, we can do something about the similar, but simpler pattern ``` struct Foo{T} x Foo(x::T) where {T} = new{T}(x) end ``` which is what this PR does. 15 September 2022, 05:24:11 UTC
e758982 improve type stability of `tail/front(::NamedTuple)` (#46762) This fixes some invalidations when loading ChainRulesCore.jl. 15 September 2022, 03:18:52 UTC
9b1780d fix invalidations from loading Static.jl (#46761) * improve type stability of `sort!(v::AbstractVector, lo::Integer, hi::Integer, ::InsertionSortAlg, o::Ordering)` * improve type stability of `fmt(buf, pos, arg, spec::Spec{T}) where {T <: Strings}` This fixes some invalidations when loading Static.jl. 15 September 2022, 03:17:33 UTC
08115d2 clarify show docs (#46765) 15 September 2022, 03:16:20 UTC
54c06ad Add reflect! and rotate! in the documentation (#46769) 15 September 2022, 03:14:39 UTC
559e04c Set USE_BINARYBUILDER_OBJCONV=0 when USE_BINARYBUILDER_OPENBLAS=0 (#46726) Co-authored-by: Gabriel Baraldi <baraldigabriel@gmail.com> 15 September 2022, 03:12:25 UTC
f5842f8 bump the Tar stdlib from 5606269 to 5914ef9 (#46731) 15 September 2022, 01:27:14 UTC
bd6d170 Build/win: Build with MSYS2 (#46140) * Makefile: MSYS2: close path conversion for `DEP_LIBS` Automatic path conversion will replace `:` with `;` * Makefile: MSYS2: use `cygpath` for path convert ref: https://www.msys2.org/docs/filesystem-paths/#manual-unix-windows-path-conversion * devdoc/win/msys2: add build steps * devdoc/win/msys2: Add x86/x64 build notes * devdoc/win/msys2: apply sugestions Co-Authored-By: Elliot Saba <staticfloat@gmail.com> * Instead of `CC_WITH_ENV`, scope environment variables to targets * Fix whitespace Co-authored-by: Elliot Saba <staticfloat@gmail.com> 14 September 2022, 22:32:48 UTC
c6abccf Fix symdiff/symdiff! for vector inputs with duplicates, closes #34686 (#46397) 14 September 2022, 19:40:11 UTC
2cfcc1a gitignore lit test times (#46766) 14 September 2022, 18:04:37 UTC
b4af0e5 improve type stability of `process_overrides(artifact_dict::Dict, pkk_uuid::Base.UUID)` (#46661) * improve type stability of `process_overrides(artifact_dict::Dict, pkg_uuid::Base.UUID)` This fixes some invalidations when loading Static.jl 14 September 2022, 13:19:42 UTC
35191ad Improve argmin/argmax docstring (#46737) The current phrasing "Return a value `x` in the domain of `f`" is a bit misleading, as the domain of `f` may be much larger than the argument `domain`. It's better to be clear that the value returned will be an element of the `domain` that is provided. 14 September 2022, 08:37:40 UTC
b1f8d16 only store version of packages during load time when generating sysimage (#46738) 14 September 2022, 07:44:25 UTC
100d7e8 doc: clarify docstring for oftype (#46744) 14 September 2022, 07:33:07 UTC
b368e26 typo error (#46752) 14 September 2022, 07:28:59 UTC
0de477a change logic for enabling GDB JIT event listener (#46747) - default to false in release build, true in debug build - ENABLE_GDBLISTENER env var overrides that in all builds 14 September 2022, 06:36:26 UTC
8455c8f inference: concretize `invoke` callsite correctly (#46743) It turns out that previously we didn't concretize `invoke` callsite correctly, as we didn't take into account whether the call being concretized is `invoke`-d or not, e.g.: ``` julia> invoke_concretized2(a::Int) = a > 0 ? :int : nothing invoke_concretized2 (generic function with 1 method) julia> invoke_concretized2(a::Integer) = a > 0 ? :integer : nothing invoke_concretized2 (generic function with 2 methods) julia> let Base.Experimental.@force_compile Base.@invoke invoke_concretized2(42::Integer) end :int # this should return `:integer` instead ``` This commit fixes that up by propagating information `invoke`-d callsite to `concrete_eval_call`. Now we should be able to pass the following test cases: ```julia invoke_concretized1(a::Int) = a > 0 ? :int : nothing invoke_concretized1(a::Integer) = a > 0 ? "integer" : nothing @test Base.infer_effects((Int,)) do a @invoke invoke_concretized1(a::Integer) end |> Core.Compiler.is_foldable @test Base.return_types() do @invoke invoke_concretized1(42::Integer) end |> only === String invoke_concretized2(a::Int) = a > 0 ? :int : nothing invoke_concretized2(a::Integer) = a > 0 ? :integer : nothing @test Base.infer_effects((Int,)) do a @invoke invoke_concretized2(a::Integer) end |> Core.Compiler.is_foldable @test let Base.Experimental.@force_compile @invoke invoke_concretized2(42::Integer) end === :integer ``` 14 September 2022, 05:17:51 UTC
7cbea73 Test: fixup issues detected by JET (#46730) - removes stale definition of `test_approx_eq` (this seems to have been reserved for the 0.7 compat, but is currently broken as `full` is really not defined anymore) - fixes invalid construction of `Fail` object - makes `LogTestFailure` more type stable struct - improves type stabilities slightly 14 September 2022, 04:57:44 UTC
f7dea04 Fix whitespace introduced in #45854 (#46750) * Fix whitespace introduced in #45854 * Fix more whitespace Co-authored-by: Keno Fischer <keno@juliacomputing.com> 14 September 2022, 04:39:00 UTC
4bd59ac Example Workflow Docs on How to Create Tests for One's Own Package (#46357) Co-authored-by: Viral B. Shah <ViralBShah@users.noreply.github.com> Co-authored-by: woclass <git@wo-class.cn> 14 September 2022, 01:46:05 UTC
c5098a9 [devdoc] Add section “Update the version number of a dependency” (#45854) * [devdoc] Add section “Update the version number of a dependency” * [devdoc] add a check list Co-authored-by: Viral B. Shah <ViralBShah@users.noreply.github.com> 14 September 2022, 01:43:37 UTC
b97a629 doc: highlight recommendation of eachindex in arrays.md (#45341) * Update arrays.md Highlighted two portions of the text as a note and a warning, in view of the discussion Co-authored-by: Mosè Giordano <giordano@users.noreply.github.com> Co-authored-by: Viral B. Shah <ViralBShah@users.noreply.github.com> Co-authored-by: Johnny Chen <johnnychen94@hotmail.com> Co-authored-by: Michael Abbott <32575566+mcabbott@users.noreply.github.com> 14 September 2022, 01:42:13 UTC
6643090 Update doc on global variables type annotations (#46686) Co-authored-by: Kristoffer Carlsson <kcarlsson89@gmail.com> 14 September 2022, 01:20:43 UTC
f9b362e sparam inlining: Handle undefined sparams (#46703) `_compute_sparams` is not required to be able to resolve an sparam, it can leave it as a `TypeVar`, in which case accessing it should throw an UndefVarError. This needs to be appropriately handled in inlining. We have a test case like this in the test suite, but it was being papered over by an incorrect check in can_inline_typevar. Remove that check and implement proper undef checking in inlining. 13 September 2022, 22:48:47 UTC
1916d35 add `nospecialize` to deepcopy entry point (#46692) 13 September 2022, 20:40:40 UTC
d97dd8e handle empty Tuple{} in _methods_by_ftype (#46685) This is silly, but some packages try very hard to precompile everything including this, even though this is invalid. Fix #46295 13 September 2022, 18:55:50 UTC
70bfa3f improve type stability of `lt(p::Perm, a::Integer, b::Integer)` (#46732) This fixes a few hundred invalidations when loading Static/jl/ArrayInterface.jl. 13 September 2022, 12:08:51 UTC
df955b8 compiler: add missing `@nospecialize` annotations (#46734) 13 September 2022, 12:01:26 UTC
85fac87 LinearAlgebra: Allow arrays to be zero-preserving (#46340) 13 September 2022, 08:05:11 UTC
e8a2eb1 [deps/blastrampoline]: pass cross compile flags to make (#45909) Co-authored-by: Jameson Nash <vtjnash+github@gmail.com> Co-authored-by: Elliot Saba <staticfloat@gmail.com> Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 13 September 2022, 05:45:54 UTC
b284bc6 propagate context through a few more printing functions (#46716) This commit makes `:compact=>false` a way to avoid the expensive typealias checking. 13 September 2022, 03:04:19 UTC
3cb3b1c Merge pull request #46653 from JuliaLang/avi/nothrowflag 13 September 2022, 02:44:12 UTC
0b38483 inference: improve `isa`-constraint propagation for `iskindtype` objects (#46712) Currently our inference isn't able to propagate `isa`-based type constraint for cases like `isa(Type{<:...}, DataType)` since `typeintersect` may return `Type` object itself when taking `Type` object and `iskindtype`-object. This case happens in the following kind of situation (motivated by the discussion at <https://github.com/JuliaLang/julia/pull/46553#issuecomment-1233024271>): ```julia julia> function isa_kindtype(T::Type{<:AbstractVector}) if isa(T, DataType) # `T` here should be inferred as `DataType` rather than `Type{<:AbstractVector}` return T.name.name # should be inferred as ::Symbol end return nothing end isa_kindtype (generic function with 1 method) julia> only(code_typed(isa_kindtype; optimize=false)) CodeInfo( 1 ─ %1 = (T isa Main.DataType)::Bool └── goto #3 if not %1 2 ─ %3 = Base.getproperty(T, :name)::Any │ %4 = Base.getproperty(%3, :name)::Any └── return %4 3 ─ return Main.nothing ) => Any ``` This commit improves the situation by adding a special casing for abstract interpretation, rather than changing the behavior of `typeintersect`. 13 September 2022, 02:35:03 UTC
969193b Follow-up #46693 - Also exclude `Type{Tuple{Union{...}, ...}}` (#46723) * Follow-up #46693 - Also exclude `Type{Tuple{Union{...}, ...}}` The check in #46693 was attempting to guarantee that the runtime value was a `DataType`, but was missing at least the case where a tuple of unions could have been re-distributed. Fix that up and refactor while we're at it. * Apply suggestions from code review Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: Jameson Nash <vtjnash@gmail.com> 13 September 2022, 01:03:52 UTC
8a59be6 avoid Pair constructor being excessively specialized by Core.Compiler (#46684) 12 September 2022, 21:33:07 UTC
ad19f2f Support `invoke` backedges for const (#46715) This is a left-over piece of #46010, triggered by const args. Fixes #44320 12 September 2022, 21:09:22 UTC
7eacf1b Concise info on creating and using a module without core and base (#46628) Co-authored-by: Jameson Nash <vtjnash@gmail.com> 12 September 2022, 19:17:13 UTC
6f8e24c jit: reduce context lock scope (#44949) 12 September 2022, 16:52:16 UTC
7e51510 Fix #46594: Show on method with Vararg (#46710) 12 September 2022, 12:33:54 UTC
back to top