swh:1:snp:a72e953ecd624a7df6e6196bbdd05851996c5e40

sort by:
Revision Author Date Message Commit Date
6c74a4d RFC: frontend support for named OpaqueClosures One gotcha is that defining a second opaque closure with the same name as the first will just define a new opaque closure. This is of course different to how method definitions usually work, but since opaque closures don't do dispatch this seems the most sensible to me. Another thing to think about is whether we want to make the binding a constant if the opaque closure is defined in global scope. 27 March 2021, 23:05:40 UTC
712abb0 build: hotfix for #39956 (#40218) This was removed from libjulia.dll during the PR process, but got overlooked for libjulia-debug.dll, breaking that build. 26 March 2021, 19:39:13 UTC
514426d [Libdl] Use RTLD_NOLOAD when calling dlpath(::String) (#39676) This should make it faster and have fewer side-effects to look up the absolute path of libraries. 26 March 2021, 17:01:42 UTC
91c297b Support for using matrices of different types in generalized eigendecomposition (#39301) 26 March 2021, 09:29:26 UTC
beeb6d7 Remove eltype assumption from ldiv!(LowerTriangular(SparseMatrixCSC{Tv,Ti), ...) (#40174) 26 March 2021, 09:25:45 UTC
d92b0d8 Fix typo in messages.jl (#40205) bounday -> boundary 26 March 2021, 09:07:38 UTC
4f5044a Allow startup despite p7zip not being found (#40049) Without this, a failure to find a usable `p7zip` will cause an error at startup. With this, we will at least attempt to invoke `p7zip` and fail at runtime, instead of failing at init time. 26 March 2021, 02:18:08 UTC
1897e08 Fix armv7l trampoline (#40176) We copy-pasted the wrong macro here, should have used `CNAMEADDR()` not `CNAME()`. This causes segfaults on armv7l processors by trying to read from an incorrect address when loading the trampoline target address value. 25 March 2021, 19:51:27 UTC
65e1348 [LinearAlgebra] Correct `liblapack` binding (#40170) * [LinearAlgebra] Correct binding * fix English * bring liblapack back into BLAS module 25 March 2021, 14:38:03 UTC
8d3b1b0 Merge pull request #40181 from JuliaLang/fe/readme README: git checkout 1.6.0 in the instructions. 25 March 2021, 14:05:43 UTC
c6d5c40 README: git checkout 1.6.0 in the instructions. 25 March 2021, 11:35:02 UTC
e2f5f26 Have different Windows uninstall keys for different Julia versions (#40163) * Have different Windows uninstall keys for different Julia versions Should fix #40004. Have the uninstall key to be "{#AppNameLong}_is1" where AppNameLong contains the Julia version to prevent Windows from overwriting the uninstall information for different Julia versions. Inno Setup documentation about the AppId https://jrsoftware.org/ishelp/topic_setup_appid.htm copied here for convenience ``` [Setup]: AppId Default value: AppName Description: The value of AppId is stored inside uninstall log files (unins???.dat), and is checked by subsequent installations to determine whether it may append to a particular existing uninstall log. Setup will only append to an uninstall log if the AppId of the existing uninstall log is the same as the current installation's AppId. For a practical example, say you have two installations -- one entitled My Program and the other entitled My Program 1.1 Update. To get My Program 1.1 Update to append to My Program's uninstall log, you would have to set AppId to the same value in both installations. AppId also determines the actual name of the Uninstall registry key, to which Inno Setup tacks on "_is1" at the end. (Therefore, if AppId is "MyProgram", the key will be named "MyProgram_is1".) Pre-1.3 versions of Inno Setup based the key name on the value of AppVerName. AppId is a not used for display anywhere, so feel free to make it as cryptic as you desire. The value may include constants. If you use a {code:..} constant to allow your user to customize AppId, you do not need to return the real value until just before the installation starts: if necessary you may return an empty or generic value at earlier times. If not empty, this value will only be used to attempt to restore previous install settings (like the settings stored by [Setup] section directive UsePreviousAppDir). If empty, it isn't used for anything. The length of AppId with all constants evaluated should never exceed 127 characters. Example: AppId=MyProgram ``` * Use DirName as AppId Co-authored-by: Mustafa M <mus-m@outlook.com> * remove unneeded code Co-authored-by: Mustafa M <mus-m@outlook.com> 25 March 2021, 05:52:59 UTC
f023677 Fix #38491: fix an abspath() edge case on Windows (#38981) * Fix #38491: fix an abspath() edge case on Windows * Update base/path.jl Co-authored-by: Jameson Nash <vtjnash@gmail.com> * Update base/path.jl * Update test/path.jl Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: Mustafa M <mus-m@outlook.com> Co-authored-by: Jameson Nash <vtjnash@gmail.com> 25 March 2021, 05:52:34 UTC
d93fa40 Fix manual claim that `run` returns `nothing` (#40155) 24 March 2021, 19:19:21 UTC
61bec3f add < to NamedTuple (#40147) 24 March 2021, 19:17:05 UTC
10ab32f Support shared named environments during startup (#40025) * Support shared named envs during startup * Improved handling of named envs during startup Co-authored-by: Jameson Nash <vtjnash@gmail.com> * Improve tests for --project and JULIA_PROJECT * Add news item about shared env support at startup Co-authored-by: Jameson Nash <vtjnash@gmail.com> 24 March 2021, 18:42:47 UTC
08006c4 Merge pull request #40149 from bicycle1885/patch-3 fix a typo on the arithmetic and the logical shift 24 March 2021, 16:40:26 UTC
cc639ec Markdown: prevent display() error with empty list item (#40122) 23 March 2021, 17:05:13 UTC
e3dffb9 fix #40050, handling fields that are pointers due to subtype circularity (#40095) 23 March 2021, 15:43:32 UTC
3071f34 Preserve `Symmetric`/`Hermitian` shape in more cases (#40126) 23 March 2021, 07:53:54 UTC
a134fac Remove Base.getproperty docstrings in stdlibs (#40135) 23 March 2021, 07:50:28 UTC
2b6c754 Fix #40100, doc for inbounds use each index (#40102) ... deja vu (#39369) 23 March 2021, 01:20:14 UTC
7fbba2a fix a typo on the arithmetic and the logical shift 23 March 2021, 01:12:51 UTC
b1e56ab remove unclear docs for pure macro (#40092) 22 March 2021, 21:55:39 UTC
5e5484c mention use of underscore for private fields in manual (#40131) * Update variables.md * Update style-guide.md * Apply suggestions from code review 22 March 2021, 20:39:12 UTC
7d117dc document thread safety for RNGs (#40109) 21 March 2021, 12:56:45 UTC
6913f9c Compute real matrix logarithm and matrix square root using real arithmetic (#39973) * Add failing test * Add sylvester methods for small matrices * Add 2x2 real matrix square root * Add real square root of quasitriangular matrix * Simplify 2x2 real square root * Rename functions to use quasitriu * Avoid NaNs when eigenvalues are all zero * Reuse ranges * Add clarifying comments * Unify real and complex matrix square root * Add reference for real sqrt * Move quasitriu auxiliary functions to triangular.jl * Ensure loops are type-stable and use simd * Remove duplicate computation * Correctly promote for dimensionful A * Use simd directive * Test that UpperTriangular is returned by sqrt * Test sqrt for UnitUpperTriangular * Test that return type is complex when input type is * Test that output is complex when input is * Add failing test * Separate type-stable from type-unstable part * Use generic sqrt_quasitriu for sqrt triu * Avoid redundant matmul * Clarify comment * Return complex output for complex input * Call log_quasitriu * Add failing test for log type-inferrability * Realify or complexify as necessary * Call sqrt_quasitriu directly * Refactor sqrt_diag! * Simplify utility function * Add comment * Compute accurate block-diagonal * Compute superdiagonal for quasi triu A0 * Compute accurate block superdiagonal * Avoid full LU decomposition in inner loop * Avoid promotion to improve type-stability * Modify return type if necessary * Clarify comment * Add comments * Call log_quasitriu on quasitriu matrices * Document quasi-triangular algorithm * Remove test This matrix has eigenvalues to close to zero that its eltype is not stable * Rearrange definition * Add compatibility for unit triangular matrices * Release constraints on tests * Separate copying of A from log computation * Revert "Separate copying of A from log computation" This reverts commit 23becc529a5a2f295e0fa6f1b0e7b00b424c52bc. * Use Givens rotations * Compute Schur in-place when possible * Always allocate a copy * Fix block indexing * Compute sqrt in-place * Overwrite AmI * Reduce allocations in Pade approximation * Use T * Don't unnecessarily unwrap * Test remaining log branches * Add additional matrix square root tests * Separate type-unstable from type-stable part This substantially reduces allocations for some reason * Use Ref instead of a Vector * Eliminate allocation in checksquare * Refactor param choosing code to own function * Comment section * Use more descriptive variable name * Reuse temporaries * Add reference * More accurately describe condition 20 March 2021, 12:44:51 UTC
e20c3da Add kakoune editor support (#40112) * add kakoune editor support * add micro and kakoune to docstring 19 March 2021, 23:35:32 UTC
b50595d Merge pull request #40088 from JuliaLang/kf/methodrecurserel inference: Add a hook for users to be able to specify custom recursion relations 19 March 2021, 23:06:19 UTC
73622ed inference: Add a hook for users to be able to specify custom recursion relations When infering recursive functions, we try to detect cases where the recursion can be shown to be terminating and in such cases allow significantly more inference among the recursive functions than in cases where we cannot prove termination. The rationale for this is to allow inference of functions that are recursive over structures, while not spending useless (or infinite) compile time chasing down recursions that build up infinitely large types (those get expensive *fast*). Our built-in recursion relation here allows recursion to proceed if argument types are syntactic subsets, if they are decreasing integers, tuples of decreasing length, and a few other cases. It is worth noting that similar considerations come in in significantly more static system, where non-termination is (statically) disallowed. E.g. in Coq, for non-syntactic recursion, a proof needs to be provided that a recursive function does indeed terminate, before one is allowed to define it [1]. More modern languages like Dafny allow the user to specify a predicate over the incoming values that is shown to decrease over subsequent function calls [2]. My motivation comes from Diffractor, where we get call chains like: ∂⃖{1}(sin'', ...) -> ∂⃖{2}(sin', ...) -> ∂⃖{3}(sin, ...) -> ∂⃖{2}(rrule, sin, ...) -> ∂⃖{1}(rrule, sin) In this example, the first two calls are both the same method, as are the last two. Unfortunately, particularly for the first two calls, there isn't really a good way to express the recursion rule here in a way that is generic. Thus, to address these cases, this PR adds a per-method field, similar to a generator that allows packages to provide arbitrary recursion relations that take advantage of the (known) special semantics of those methods to expand the allowed set of recursions. Originally I had hoped to use this hook in place of the existing `type_more_complex` check. However, our code currently requires transitivity of the `type_more_complex` check for soundness of the termination analysis. This runs into problems in the specified use case, because we may have interleaved chains of calls, that are both the same method, but are not actually part of a cycle as such because their ultimate underlying methods are different (in particular this happens when chaining two-Cassette like generated functions). We do not currently express enough about the semantics of these Cassette-like methods in order for inference to reasonably compute whether two instances are part of the same cycle or not (we have `method_for_inference_heuristics` of course, which takes care of one level of this, but does not take care of the nested case). By having this hook, but not requring transitivity, it is legal for the hook to compute whether the ultimate underlying method is the same (by using its knowledge of what the methods actually do) and answering accordingly. In the long run, I would like to bring these Cassette-like capabilities more closely into the compiler, at which point inference itself may have enough information to compute the cycles and we'd be able to get away with requiring transitivity. All that said, this mechanism is quite simple and achieves its goal. I don't think it is particularly pretty and should definitely be considered unstable. I'm not providing any user-facing APIs for this, so those in the know will have to manually poke the methods. I do think a more general language-level framework for proving termination could be useful, particularly as part of more rigurous definitions of when various constant propagation happens, but this is not that, yet. I've tried this in Diffractor and with appropriate definitions of the recursion relation for the relevant functions, Diffractor becomes nicely inferable: ``` julia> using Diffractor: var"'", ∂⃖ julia> Base.return_types(sin''', Tuple{Float64}) 1-element Vector{Any}: Float64 julia> Base.return_types(sin'''', Tuple{Float64}) 1-element Vector{Any}: Float64 julia> Base.return_types(sin''''', Tuple{Float64}) 1-element Vector{Any}: Float64 julia> Base.return_types(sin'''''', Tuple{Float64}) 1-element Vector{Any}: Float64 ``` Diffractor's Phase 1 design goal was to infer fine at 3rd and 4th order - which this meets. The fact that it also infers at higher orders is nice, but inference times also increase to impractical levels for real-world functions, e.g. 5th order above takes a few seconds to infer just `sin` and 6th order takes about 20s or so. Of course that is still better than Zyogte, even at second order, but fixing this properly will be part of Diffractor Phase 2. With this (plus some additional tweaks to constprop heuristics for OpaqueClosure that I'll be putting up separately), we do also generate very nice code: ``` julia> @code_typed sin'''(1.0) CodeInfo( 1 ─ %1 = invoke ChainRules.sincos(_2::Float64)::Tuple{Float64, Float64} │ %2 = Base.getfield(%1, 1)::Float64 │ %3 = Base.getfield(%1, 2)::Float64 │ %4 = Diffractor.getfield(%1, 1)::Float64 │ %5 = Diffractor.getfield(%1, 2)::Float64 │ %6 = Diffractor.getfield(%1, 2)::Float64 │ %7 = Base.mul_float(%6, 1.0)::Float64 │ %8 = Base.mul_float(0.0, %7)::Float64 │ %9 = Base.neg_float(%4)::Float64 │ %10 = Base.mul_float(%9, 1.0)::Float64 │ %11 = Base.mul_float(1.0, %8)::Float64 │ %12 = Base.mul_float(%5, 1.0)::Float64 │ %13 = Base.mul_float(%12, %7)::Float64 │ %14 = Base.mul_float(0.0, %12)::Float64 │ %15 = Base.mul_float(0.0, %13)::Float64 │ %16 = Base.mul_float(%14, 1.0)::Float64 │ %17 = Base.mul_float(%6, %14)::Float64 │ %18 = Base.mul_float(%10, 1.0)::Float64 │ %19 = Base.mul_float(1.0, %10)::Float64 │ %20 = Base.add_float(%17, %18)::Float64 │ %21 = Base.mul_float(0.0, %20)::Float64 │ %22 = Base.mul_float(%21, 1.0)::Float64 │ %23 = Base.mul_float(%6, %21)::Float64 │ %24 = Base.add_float(%22, %16)::Float64 │ %25 = Base.add_float(%23, %19)::Float64 │ %26 = Base.mul_float(0.0, %25)::Float64 │ %27 = Base.add_float(%15, %26)::Float64 │ %28 = Base.add_float(%24, %11)::Float64 │ %29 = Base.add_float(%27, -1.0)::Float64 │ %30 = Base.neg_float(%2)::Float64 │ %31 = Base.mul_float(%3, %29)::Float64 │ %32 = Base.muladd_float(%30, %28, %31)::Float64 └── return %32 ) => Float64 ``` [1] http://adam.chlipala.net/cpdt/html/GeneralRec.html [2] https://rise4fun.com/Dafny/tutorial/Termination 19 March 2021, 01:02:13 UTC
efad4e3 Restore moving GlobalRef out of argument position (#40101) This was dropped in #40066. I thought this was there because of the side-effect that we used to allow in GlobalRefs, but we also need to avoid inlining it into a PhiNode, and there are data race concerns as well, so put back the outlining. Fixes verifier complaints in `make debug` mode. 18 March 2021, 23:23:15 UTC
998951e Slightly refactor recursion detection NFC. I'm about to suggest some pretty invasive changes to the recursion detection code, so I figured as a first step, I'd refactor it to make it a bit easier to understand, since I always get confused by this code, 18 March 2021, 22:45:56 UTC
1006d5f Implement OC captures getfield elim (#40069) This was originally in #40005, but we switched the representation of accessing the OC captures from a sepcial intrinsic to inserting an additional `getfieled(oc, :captures)`, which I thought obviated the need for extra getfield elim support, but that's of course not true, since getfield elim knows nothing about :new_opaque_closure. Bring back that opimization and add a test, so we notice in the future. 18 March 2021, 21:35:39 UTC
f989b91 doc: add compat annotation for mapexpr argument to include(_string) (#39856) 18 March 2021, 21:11:55 UTC
561819b doc: add a missing word in "Trait-based dispatch" section (#40012) 18 March 2021, 21:07:52 UTC
30594c7 doc: fix some typos in faq.md (#40072) 18 March 2021, 21:04:42 UTC
ae0dc54 [automated] Bump the Pkg stdlib from 7a9d9654 to af7e41cd (#40087) Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 18 March 2021, 18:44:55 UTC
8530aad Fix warnings in ast.c (#40091) 18 March 2021, 18:11:59 UTC
36e1839 Only compute effect_free once (#40066) This is a revival of #33753. While this is useful in itself, my real goal here is to be able to make use of the computed effect-freeness earlier to allow removal of calls that the compiler has shown to be effect-free, but are too large to inline. This moves in that direction, by making effect-freeness an SSA flag that an appropriate pass can then set and that it propagated appropriately by inlining (since unlike effect-freeness on builtins which is easy to compute, effect-freeness on generic function calls requires interprocedural information that we throw away after inlining into the outer function). While I'm at it, also refactor the instruction insertion interface, to make them all use a common type, rather than random assortments of subsets of the possible fields. 18 March 2021, 16:36:41 UTC
51591ff Fix typo in typelimits.jl (#40090) occurence -> occurrence 18 March 2021, 14:05:42 UTC
107901d Try to avoid julia becoming unkillable after fatal errors (#40056) - don't smash the alt-stack when already using it - handle jl_critical_error on the original stack, leaving our signal handling thread free to handle more signals (and helping lock corruption detection in some cases) - unblock signals when handling signals: some libc apparently like to block all signals, which can cause mild havoc, since we'd really like the user or bad data to be able to still kill the process (and not just be ignored or cause it to hang) - reset signals to SIG_DFL earlier (so we recurse less) - destroy some state from the Task we co-opted to run the exit handlers, so that it can't accidentally jump back into the running program after we've started tearing down the process, from an untimely ^C (previously ^C might cancel the exit) or a jlbacktrace call. - mark functions as leaf with CFI instead of (potentially) smashing the stack, and add a bit of red-zone if we are recursing (to keep pgcstack sensible) - support safe_restore for the mach catch_exception_raise (while we're trying to generate the backtrace) 18 March 2021, 04:35:43 UTC
6bdba43 Fix hashing for large arrays (#40083) * Fix hashing for large arrays caused by https://github.com/JuliaLang/julia/pull/39966#pullrequestreview-614659942 * add test * Revert to hashing key=>elt pairs. 17 March 2021, 23:20:39 UTC
5515893 build: avoid gtar race bug when managing Tar.jl files (#40063) Tar.jl omits the directory entry, but gtar has a race-condition where it gets the error code wrong when run in parallel when that is missing, resulting in failed builds. Probably it was a premature performance optimization. Fix that by running gtar twice. 17 March 2021, 18:47:50 UTC
7838e09 Revert "add 'ᵀ postfix operator for transpose (#38062)" (#40075) This reverts commit 665279aedb18501938c934d46aa593a26a506b3e. 17 March 2021, 17:07:39 UTC
b633c29 Add HISTORY.md entry for change noted in #39589 (#39784) * Add HISTORY.md entry for change noted in #39589 * Rephrase Following mbauman’s suggestion: https://github.com/JuliaLang/julia/pull/39784#discussion_r581033778 Co-authored-by: Matt Bauman <mbauman@gmail.com> 17 March 2021, 13:36:41 UTC
d7da2a4 minor follow ups for opaque closure works (#40052) 16 March 2021, 13:41:58 UTC
c700781 Use faster hash for short arrays. (#39966) * Use faster hash for AbstractArrays. Since the current code already hashes all elements of small arrays (<4096 elements), this is basically a fast-path that avoids a lot of the math. It also xors the hashes, which should allow the compiler to vectorize hashing. As a result, I'm measuring about a 4x speedup for hashing a 20x20 matrix, and have not found cases where this is slower. In addition, we can only hash the values for all arrays yielding to a 2x speedup. Co-authored-by: Matt Bauman <mbauman@juliacomputing.com> Co-authored-by: Jameson Nash <vtjnash@gmail.com> 16 March 2021, 13:39:21 UTC
dca0850 add explanation about top-level compilation to timing macros [skip ci] (#39802) 16 March 2021, 11:01:48 UTC
da96fef Correct lyap definition for complex scalar arguments (#39901) 16 March 2021, 09:14:16 UTC
ae26fc6 Fix typo in CONTRIBUTING.md (#40053) 16 March 2021, 06:50:46 UTC
70b6afa Implement inlining for OpaqueClosure (#40005) Inlining works basically the same as for regular methods (except that the info is diffrent of course). One particular difference is that inlining replaces `getfield` by a new `getfield_closure_env` function that pierces through the opaqueness of the closure. The getfield elim pass is taught about this function and can eliminate it, but there is also a fallback implementation of it in Core. This is entirely intended to be a temporary implementation detail until we do something better for the opaque closure environment, so it's not supposed to have user facing semantics. 16 March 2021, 03:17:45 UTC
8fc5293 improve IdDict performance by 33% (#40008) This takes a couple common operations and ensures they are inlined, resulting in significant performance gains for task_local_storage. 15 March 2021, 19:42:51 UTC
3635f04 Check issimpleenoughtype before stripping off type parameters in tmerge (#39980) * Check issimpleenoughtype before stripping off type parameters * Avoid finalizer to be compiled during test_jl_dump_compiles_toplevel_thunks 15 March 2021, 19:28:21 UTC
11016bf Fix opaque closure codegen ABI (#40001) At the moment our ABI for specfun opaque closures is that the opaque closure itself remains a GC tracked pointer out of which the function itself implicitly loads the environment and the world age. In the future we may want to improve this ABI, but it seems fine for now. However, this ABI wasn't quite implemented correctly after we've started turning on inference of OpaqueClosure where the first argument of the MethodInstance's linfo actually stores the type of the closure environment rather than the closure itself. Fix this by manually forcing the signature determination code to just treat that argument as `Any`, though of course in the future we may want to do something fancier. 15 March 2021, 14:55:35 UTC
b20de6a fix indent of docstrings (#40023) 15 March 2021, 08:39:42 UTC
accce7f fix typo in symlink (#40026) 14 March 2021, 21:13:12 UTC
cc45b99 Prettier error for asin (#40010) Fonts with ligatures display `"asin(x) is not defined for |x|>1."` as `|x▷1`. The spaces fix this. For `acos` the message is already fine. 13 March 2021, 15:44:52 UTC
a43e01f Fix constprop inference for varargs OpaqueClosure (#39972) OpaqueClosure are marked as vararg (or not) at construction time rather than in the method. As a result, we need to chain this information through to the cache. We may want to refactor this code to deal with the vararg-ness (or not) of a particular definition one level above this. We already keep the cache in a form that represents the vararg tuple explicitly. However, for now this fixes things for now (and also prevents Cthulhu from getting confused upon encountering these). 12 March 2021, 23:26:39 UTC
ec78ac7 Fix a couple of likely typos in deps/p7zip.mk and deps/pcre.mk. (#40003) 12 March 2021, 23:26:14 UTC
0f7d183 Expand `Artifacts` tests for new platforms (#39829) We needed new artifacts for our new platforms, so steal `HelloWorldC` and stop using `c_simple_jll`, as it's not being updated anymore. 12 March 2021, 23:16:38 UTC
1edd306 Thread through method name for OpaqueClosures (#39970) Makes it easier for packages like diffractor to give names to opaque closures that may show up in backtraces to tell the user what's going on. 12 March 2021, 21:12:15 UTC
33e2f90 Fixes rendering of nested lists. (#39992) This change fixes the rendering of nested lists in the documentation by adding indentation. Previously, the items in the outer ordered list would both be labeled with "1." when rendered to html. This change adds a single space to the indentation of each item in the unordered lists, resulting in the correct labels "1." and "2." when rendered to html. 12 March 2021, 14:07:29 UTC
fa7d792 Improve Cholesky docstrings (#39964) 12 March 2021, 14:05:35 UTC
c9c1d3e make broadcasting into getproperty extensible (#39473) * make broadcasting into getproperty extensible Don't know if `dotgetproperty` is a good name for this, since as discussed in #36741, the way this works is a bit different from `dotview`. Right now, `dotproperty` returns a function which is used instead of `getproperty`, but not sure if that is a bit strange and we should just make it behave like `dotview` instead. fixes #36741 * make dotgetproperty call getproperty directly Co-authored-by: Jameson Nash <vtjnash@gmail.com> 12 March 2021, 08:03:58 UTC
d234931 Allow CartesianIndices with Bool argument (#39962) Follow up to the problem discussed in https://github.com/JuliaLang/julia/pull/31829#issuecomment-793030999. I came to the conclusion that `CartesianIndices((true,))` should be allowed as in this context `true` represents a dimension length not an index. 12 March 2021, 03:37:27 UTC
bf05fd1 doc: fix OurRational example for current gcd behavior (#39935) 12 March 2021, 03:18:46 UTC
135d7a0 Complex{<:OurRational} instead of Complex{OurRational} (#39934) 12 March 2021, 03:16:07 UTC
901d270 Support missing values in fpsort! (#27817) Use the fast algorithm for floating point even in the presence of missing values, adapting existing code to handle NaN. After sorting NaN and missing at the end, a second pass is made over these to put missing after NaN. 11 March 2021, 20:08:52 UTC
93b89b9 reduce precompile() failure severity to a warning (#39905) Many users (including Base) are calling `@assert`, despite that this is not what assert should be used to mark, for many reasons. This happened to also reveal a small number of errors, so also detect those (for fixing later). Refs: https://github.com/JuliaLang/julia/commit/c0f9666d0b94b213c7ff9e64a7b4e5268aa0e18b#commitcomment-47782674 11 March 2021, 19:36:57 UTC
3276c11 Restore StackOverflow error message for repeated frames (#39930) Fixes backtrace printing to display the number of times a frame is repeated, if there is a frame that's duplicated several times. ```julia julia> function foo() foo() end foo (generic function with 1 method) julia> foo() ERROR: StackOverflowError: Stacktrace: [1] foo() (repeats 79984 times) @ Main ./REPL[16]:1 ``` Fixes #37587. Co-authored-by: Nathan Daly <nhdaly@gmail.com> 11 March 2021, 18:20:02 UTC
53f328d inference: allows conditional object to propagate constraint multiple times (#39936) Currently we always `widenconditional` conditional var state, which makes us unable to propagate constraints from conditional object multiple times: ```julia @test Base.return_types((Union{Nothing,Int},)) do a b = a === nothing c = b ? 0 : a # c::Int d = !b ? a : 0 # d::Int ideally, but Union{Int,Nothing} c, d end == Any[Tuple{Int,Int}] # fail ``` This PR keeps conditional var state when the update is came from a conditional branching, and allows a conditional object to propagate constraint multiple times as far as the subject of condition doesn't change. AFAIU this is safe because the update from conditional branching doesn't change the condition itself. 11 March 2021, 16:42:22 UTC
bb5a013 Add a missing at-test (#39979) 11 March 2021, 02:38:52 UTC
caf10d7 Implement OpaqueClosure return type narrowing (#39917) Allows the optimizer to rewrite the return type parameter of the OpaqueClosure based on inference results of the partially specialized (i.e. specialized on the closure environment, but not on the argument types of the opaque closure). This helps by forcing an inference barrier to occur if the PartialOpaque-ness information gets lost, causing a re-infer with at least the rt information we have from inference. 10 March 2021, 22:45:58 UTC
abde2f1 Fix wrong := REPL documentation (#39975) 10 March 2021, 22:37:15 UTC
1f21f2d inference: enable constant propagation for union-split signatures (#39305) The inference precision of certain functions really relies on constant propagation, but currently constant prop' won't happen when a call signature is union split and so sometimes inference ends up looser return type: e.g. ```julia julia> Base.return_types((Union{Tuple{Int,Nothing},Tuple{Int,Missing}},)) do t a, b = t a # I expected a::Int, but a::Union{Missing,Nothing,Int} end |> first Union{Missing, Nothing, Int64} ``` This PR: - enables constant prop' for each union signatures, by calling `abstract_call_method_with_const_args` just after each `abstract_call_method` - refactor `abstract_call_method_with_const_args` into two separate parts, 1.) heuristics to decide whether to do constant prop', 2.) try constant propagation The added test cases will should showcase the cases where the inference result could be improved by that. --- I've not seen notable regression in latency with this PR. Here is a sample benchmark of the impact of this PR on latency, from which I guess this PR is acceptable ? > build time: master (caeacef) ```bash Sysimage built. Summary: Total ─────── 61.615938 seconds Base: ─────── 26.575732 seconds 43.1313% Stdlibs: ──── 35.038024 seconds 56.8652% JULIA usr/lib/julia/sys-o.a Generating REPL precompile statements... 30/30 Executing precompile statements... 1378/1378 Precompilation complete. Summary: Total ─────── 116.417013 seconds Generation ── 81.077365 seconds 69.6439% Execution ─── 35.339648 seconds 30.3561% LINK usr/lib/julia/sys.dylib ``` > build time: this PR ```bash Stdlibs total ──── 34.077962 seconds Sysimage built. Summary: Total ─────── 61.804573 seconds Base: ─────── 27.724077 seconds 44.8576% Stdlibs: ──── 34.077962 seconds 55.1383% JULIA usr/lib/julia/sys-o.a Generating REPL precompile statements... 30/30 Executing precompile statements... 1362/1362 Precompilation complete. Summary: Total ─────── 111.262672 seconds Generation ── 83.535305 seconds 75.0794% Execution ─── 27.727367 seconds 24.9206% LINK usr/lib/julia/sys.dylib ``` > first time to plot: master (caeacef) ```julia julia> using Plots; @time plot(rand(10,3)) 3.614168 seconds (5.47 M allocations: 324.564 MiB, 5.73% gc time, 53.02% compilation time) ``` > first time to plot: this PR ```julia julia> using Plots; @time plot(rand(10,3)) 3.557919 seconds (5.53 M allocations: 328.812 MiB, 2.89% gc time, 51.94% compilation time) ``` --- - fixes #37610 - some part of this code was taken from #37637 - this PR is originally supposed to be alternative and more generalized version of #39296 10 March 2021, 20:25:29 UTC
f8125c0 Export mmap from Mmap (#39816) Currently, one needs `Mmap.mmap`, which is unnecessarily redundant. 10 March 2021, 19:39:58 UTC
bc14059 ignore manifest of stdlibs (#39898) 10 March 2021, 18:57:37 UTC
f3c66b3 Don't make assumptions on the relationship of nargs and sig.parameters (#39971) We've been slowly cleaning up instances of this. OpaqueClosures can mess with this assumption now and in the future more compact tuple types might as well. 10 March 2021, 18:21:36 UTC
b2d66c9 Add Pkg checksums that should have been included in #39931 (#39969) 10 March 2021, 09:03:56 UTC
b4c79e7 Merge pull request #39956 from JuliaLang/jn/broken-makefiles fix missing dependency links in Makefiles 09 March 2021, 21:03:31 UTC
275d3de allow quoted ssa values and slots in ast (#39965) This should probably be allowed, since it is often useful to put a `QuoteNode` containing arbitrary Julia objects into an AST. Since it's quoted, I don't see any reason to disallow `SSAValue`s and `SlotNumber`s here. 09 March 2021, 20:49:15 UTC
913f79d fix behavior of JULIA_EXCLUSIVE to agree with documentation (#39961) 09 March 2021, 20:47:50 UTC
9dc9c2d fix #39948, stack overflow due to free typevar during `jl_type_intersection2` (#39959) 09 March 2021, 20:45:47 UTC
c950f90 refactor BasicBlock counting (#39945) 09 March 2021, 20:37:43 UTC
d9149b5 improve type stabilities where `_methods_by_ftype` is used (#39937) 09 March 2021, 20:36:31 UTC
cc66025 fix #39895, crash from deserialized closure using the shared method table (#39916) 09 March 2021, 20:31:05 UTC
a5628bf choosetests: add a couple missing tests (#39837) and fix test/filesystem.jl 09 March 2021, 16:11:51 UTC
faa3d41 Faster AbstractArray hashing with a static hash seed (#39950) Previously, the `object_id` lookup for `hash(AbstractArray, h)` dominated the hashing time for `AbstractArray`: ``` julia> using StaticArrays, BenchmarkTools julia> a = @SVector [1,2,3,4,5]; julia> @btime hash($a, UInt(0)) 77.935 ns (0 allocations: 0 bytes) 0xdeb6d0657a261f74 julia> @btime hash(AbstractArray, UInt(0)) 58.643 ns (0 allocations: 0 bytes) 0xc03f1dbe32103a9e ``` This replaces the hash of the objectid with a static randomly-generated number. Now: ``` julia> @btime hash($a, UInt(0)) 18.580 ns (0 allocations: 0 bytes) 0x5e77b8bf73067ebd ``` and for a random `Float64` vector ``` julia> @btime hash($a, UInt(0)) 29.031 ns (0 allocations: 0 bytes) 0x9a574d69612587eb ``` Co-authored-by: Milan Bouchet-Valat <nalimilan@club.fr> 09 March 2021, 06:37:13 UTC
cdc34f7 build,uninstall: avoid removing directories in usr This can cause a race if we happen to be trying to install something else in the same directory we just removed. Very unlikely, but unnecessary to remove them anyways (and generally was already broken for Yggdrasil-provided binaries). 09 March 2021, 01:42:23 UTC
2d2f7ac build: fix missing dependency links in Makefiles 09 March 2021, 01:42:20 UTC
970edc7 Merge pull request #39540 from JuliaLang/jn/39508 fix internal IR corruption from use of a global 08 March 2021, 19:18:24 UTC
26d887e REPL: try to coalesce updates (#39538) When input is arriving too fast, delay computing and rendering the full screen until a short delay after typing stops. 08 March 2021, 19:17:41 UTC
a01d7f3 Merge pull request #39524 from JuliaLang/jn/25997 regex: enable safe handling of invalid UTF-8 by default 08 March 2021, 19:17:13 UTC
86387a8 Improve (no)specialization in print_matrix (#39194) It makes sense to extract the axes before we lose inferrability of the vector or matrix being printed. Hence this delays application of `@nospecialize`. However, it also standardizes the row/column indices and reduces specialization in `alignment`. Co-authored-by: Kristoffer Carlsson <kcarlsson89@gmail.com> 08 March 2021, 14:09:33 UTC
6fb3558 Range indexing: error with scalar bool index like all other arrays (#31829) 08 March 2021, 08:46:40 UTC
5fab42a Bump Pkg on master (#39931) This should include the recent `is_stdlib()` fixes. Short commit log: ``` 7a9d9654 (HEAD -> master, origin/master, origin/HEAD) [ext/HSG]: Store next release _and_ latest nightly (#2418) 7b870924 [ext/HSG]: Enable generating historical stdlibs on macOS (#2417) 5d496193 Update Project.toml feada149 only use the stdlib version cache if a custom version is given to the resolver bae808dc Fix Markdown table formatting (#2416) 6e8b6214 Update docstrings for io kwargs, some io kwarg fixes, update stdlib list (#2402) c2e3879e Mark the "STDLIBS_BY_VERSION up-to-date" test as broken (#2409) ``` 06 March 2021, 16:33:09 UTC
efa7e4e improve inferrabilities in Test module (#39761) * improve inferrabilities in `Test` module 06 March 2021, 11:06:17 UTC
22f84e7 Reorganize code to keep code as IRCode slightly longer (#39885) This moved the primary place where IRCode gets converted into CodeInfo into the transform_result_for_cache call, which is a sensible place for it to be since the primary reason we need to convert back to IRCode is to make it acceptable for storing in the global cache. The reason we might want to not perform the conversion, is that the conversion is slightly lossy, because it drops stmtinfo. However, in Cthulhu, I would like to keep the statement info around such that Cthulhu can present it to the user, even in optimized code (i.e. where inlining decided not to inline, I would still like Cthulhu to be able to introspect inference's original annotations). This change makes that possible. In an ideal world, we wouldn't have to do this at all for uncached code, but of course both code_typed and typeinf_ext do look at the code, even if it is uncached. Unfortunately, at the moment we don't really have a good way to indicate whether or not the code will be looked at, so there is a fallback path that always does the conversion if we decided not to do the caching. Some future refactoring can save some additional time here. 06 March 2021, 03:19:37 UTC
bf0364b Faster dot product for sparse matrices and dense vectors (#39889) 05 March 2021, 21:15:33 UTC
6cea0d2 Fixed a typo. (#39914) 05 March 2021, 18:06:09 UTC
back to top