https://github.com/JuliaLang/julia

sort by:
Revision Author Date Message Commit Date
2d468b1 Mutually recursive field types, the easy version This is an alternative to #32581, that is easier to implement, but more restrictivive. Here, the forward declaration must contain everything except for the field types: ``` incomplete type Foo{Bar} <: Baz; end ``` with it being an error to deviate from this specification when completing the type ``` struct Foo <: Baz; end # Error: Missing type parameter struct Foo{A, B} <: Baz; end # Error: Too many type parameters struct Foo{Qux} <: Baz; end # Error: Name of type parameter doesn't match struct Foo{Bar<:Int64} <: Baz; end # Error: Bounds of type parameter don't match struct Foo{Bar}; end; # Error supertype dosesn't match ``` This is easier because this way we have enough information for subtyping and type application and therefor do not need to delay this until the entire dependency graph is complete as we did in #32581. Of course this also means that we don't get the union feature that was requested in #269: ``` inomplete type U; end struct A; x::U; end struct B; x::U; end U = Union{A, B}; #ERROR ``` However, it could of course be emulated by wrapping the union type: ``` struct U data::Union{A, B} end ``` However, given the simplicity of this change and the difficulty of #32581, this seems like the way to go for the moment. We may want to revisit all this if we ever want to do computed field types, which will encounter similar challenges as #32581. Fixes #269. 02 August 2019, 16:40:47 UTC
45ba7aa Add incomplete flag to jl_datatype_t 02 August 2019, 16:32:26 UTC
b89af39 Add parsing for incomplete type 02 August 2019, 16:32:26 UTC
089cafc Fix pagetable1 sweeping on 32bit (#32741) If no pool allocations have occurred before the first GC (e.g. because MEMDEBUG was set), the pagetable1 that covers the entire (32bit) memory region on 32 bit machines may not have been initialized yet, while the corresponding sweep function was making the assumption that the passed in pagetable was non-null. Add the appropriate check for initialization. 02 August 2019, 16:30:21 UTC
1ad8178 Tasking for Emscripten/Wasm target (#32532) This is an implementation of Julia's coroutine/tasking system on top of the binaryen Asyncify transform [1] recently implemented by Alon Zakai. The wasm target is unusual in several ways: 1. It has an implicitly managed call stack that we may not modify directly (i.e. is only modified through calls/returns). 2. The event loop is inverted, in that the browser runs the main event loop and we get callbacks for events, rather than Julia being the main event loop. Asyncify takes care of the first problem by providing a mechanism to explicitly unwind and rewind the implicitly managed stack (essentially copying it to an explicitly managed stack - see the linked implementation for more information). For the second, I am currently using the ptls root_task to represent the browser event loop, i.e. yielding to that task will return control back to the browser and this is the task in which functions called by javascript will run unless they explicitly construct a task to run. As a result, julia code executed in the main task may not perform any blocking operations (though this is currently not enforced). I think this is a sensible setup since the main task will want to run some minor julia code (e.g. to introspect some data structures), but the bulk of the code will run in their own tasks (e.g. the REPL backend task). [1] https://github.com/WebAssembly/binaryen/blob/master/src/passes/Asyncify.cpp 02 August 2019, 16:16:42 UTC
86c2126 Merge branch 'jonnystorm-add-new-recvfrom-with-port' 02 August 2019, 14:44:25 UTC
0448a26 Change `Sockets.recvfrom` to return both host and port 02 August 2019, 14:43:53 UTC
a607f83 Merge pull request #31777 from nlw0/patch-1 Fixing IR dump code snippet in llvm.md 02 August 2019, 08:10:38 UTC
dc0bf52 fix #32703, bad ambiguity error (#32731) caused by 52838478aabe93120a0152ec5da733c9d8f0c39a 02 August 2019, 03:01:50 UTC
30b3636 fix test for sparse matrix assignment (#32756) 01 August 2019, 19:37:14 UTC
46c9a77 treat Pair as broadcast scalar (#32209) 01 August 2019, 18:35:00 UTC
4324531 Add docstest=only option to docs/make.jl (#32376) * Bump Documenter to 0.23.1 * Documenter now requires docstring doctests to have their own metadata in the corresponding module. Remove all the now redundant at-meta blocks from the standard library .md files and add the necessary module-level metadata in make.jl 01 August 2019, 17:11:06 UTC
eee51db Remove straggling "default to scalar" broadcast doc (#32750) 01 August 2019, 17:00:06 UTC
722a2e2 Made `_dump_function` parameter `debuginfo` optional and fixed IR dump example on llvm.md 01 August 2019, 13:12:05 UTC
e9a375a Fix #32514, add link to DimensionMismatch (#32745) 01 August 2019, 02:08:05 UTC
927f7d8 docstrings for dllist, dlpath (#32501) (#32507) 31 July 2019, 18:03:25 UTC
9d4e8ae Move `functionloc` to methodshow.jl and make it Revise-aware (#32708) A user question revealed that `@edit foo(arg)` is not Revise-aware for most editors. This PR changes that. The move to a new file is motivated by bootstrap issues. `functionloc` is not really reflection in the sense of the compiler, so this doesn't seem too inappropriate. 31 July 2019, 09:37:09 UTC
5aea456 Merge pull request #32734 from jpsamaroo/jps/wasm-addrspaces Add LLVM patches for WebAssembly 30 July 2019, 22:11:00 UTC
9b8fa75 synchronize news and history with 1.2 branch (#32740) 30 July 2019, 21:15:40 UTC
a4f17c1 Remove doubled "the the" on line 540 (#32735) Remove a typo doubling "the" on line 540 30 July 2019, 15:11:43 UTC
f563100 Add LLVM patches for WebAssembly 30 July 2019, 12:28:55 UTC
25eb8c6 Implement isdiag(::Bidiagonal), add tests (#32694) 30 July 2019, 07:16:53 UTC
442d159 Small fixes in LinearAlgebra documentation (#32714) * Small fixes in LinearAlgebra documentation * Fix doctests for eigen 28 July 2019, 18:28:27 UTC
a811842 Add compat note for mod(n, range), followup to #32628 (#32669) 28 July 2019, 15:54:46 UTC
89b8057 Merge pull request #32145 from yhls/yhls/fixrenaming fix bug in block renaming for dead code elimination 27 July 2019, 13:00:17 UTC
3829e8f fix bug in block renaming for dead code elimination 27 July 2019, 03:18:34 UTC
20ef262 Implement isdiag(::Tridiagonal), add related tests (#32692) 27 July 2019, 00:02:47 UTC
d0e11cf fix generic ldiv! for CholeskyPivoted (#32593) * fix generic ldiv! for CholeskyPivoted * add back one empty line to make backport easier * don't interfere with previous tests 26 July 2019, 23:45:36 UTC
16fdcf7 Add read file example for try (#32508) 26 July 2019, 23:24:45 UTC
abae4a8 add the sprand change to NEWS.md (#32695) 26 July 2019, 23:23:34 UTC
be74956 Merge pull request #32691 from JuliaLang/mbauman-patch-2 Add minor code formatting to GC docs 26 July 2019, 18:16:22 UTC
4155ea8 Tests for sppromote pass-throughs (#32679) 26 July 2019, 16:18:47 UTC
4ed302d Add minor code formatting to GC docs The `_`s here were rendering as italics. Simple fix. 26 July 2019, 14:49:42 UTC
472b0a7 `import` can operates on multiple names. (#32676) 26 July 2019, 14:00:04 UTC
8e66e89 Remove references to the doc"" string macro (#32409) 26 July 2019, 13:57:59 UTC
daa992a Remove unnecessary and slow Bidiagonal times Vector fallback (#32535) * remove fallback * removing other unnecessary fallbacks 26 July 2019, 13:08:43 UTC
8141750 Merge pull request #32674 from JuliaLang/vc/pure fix propagation of pure and const results 26 July 2019, 12:55:50 UTC
3e5ffb9 fix propagation of pure and const results 25 July 2019, 02:48:47 UTC
a8a567e [Statistics] fix type determination in corm (#32271) * [Statistics] fix type determination in corm * remove obsolete typeof * use first element(s) for type initialization * add test for inhomogeneous data and for overflow * fix test with NaN 24 July 2019, 21:15:19 UTC
e6a897e combine doc strings for `dot` (#32540) 24 July 2019, 20:09:47 UTC
2182389 mod(n, range) for integers (#32628) `mod` now accepts a unit range as the second argument to easily perform offset modular arithmetic to ensure the result is inside the range 24 July 2019, 12:43:38 UTC
9daaed6 add CartesianIndex() for Ref getindex and setindex! (#32653) * add CartesianIndex() for Ref getindex and setindex! * fix typo * add NEWS.md entry * move definitions later in the load sequence 23 July 2019, 21:44:52 UTC
6e4acaa Make UUIDs act as scalars when broadcasting (#32661) 23 July 2019, 20:48:57 UTC
f2513a8 Test for complex(SparseMatrixCSC) (#32657) 23 July 2019, 05:06:09 UTC
6c11e7c Set VERSION to 1.3.0-alpha (#32656) 23 July 2019, 01:46:17 UTC
3f53fb0 Two missing tests for SparseColumnView (#32654) 23 July 2019, 00:11:44 UTC
c86700d add experimental `@spawn` macro to Base.Threads (#32600) 22 July 2019, 21:02:32 UTC
684973e make collect interval thread-local only (#32633) This allows it to expand naturally with the number of threads, giving much better scalability in GC-heavy workloads. This way gc_init doesn't need to know nthreads. fixes #32472 22 July 2019, 19:30:43 UTC
ddd3f0f fix #32582, type intersection bug in unions (#32590) Caused by 4f8a7b965a98c307f48820c35ca98f9d754096a9; reverts part of that. 22 July 2019, 17:57:12 UTC
544123c deprecate Distributed `@spawn` to `@spawnat :any` (#32638) 22 July 2019, 17:40:57 UTC
17c174a fix #32626, allow parsing `'a'..'b'` (#32634) An error for this was added to fix #3348, but it seems there should be some exceptions. 22 July 2019, 14:40:35 UTC
617bd1d move definitions later in the load sequence 22 July 2019, 13:21:06 UTC
1113baa add NEWS.md entry 22 July 2019, 13:10:59 UTC
7b78b6f fix typo 22 July 2019, 13:05:54 UTC
02d9284 add CartesianIndex() for Ref getindex and setindex! 22 July 2019, 12:53:15 UTC
db1fc0a Check number of arguments passed to jl_svec* functions (#32643) When modifying Julia's builtin types, it's really easy to make mistakes here. Now the compiler will check for you. 22 July 2019, 01:18:29 UTC
5148d2f widen int16 task heap counters (#32644) These could easily overflow with large numbers of tasks. 21 July 2019, 20:12:11 UTC
d15fc9d Fix explanation for the product of BigInts in a vector (#32649) 21 July 2019, 19:21:26 UTC
c49ba0d RNG: rename get_local_rng => default_rng (#32641) 21 July 2019, 02:12:25 UTC
e25e1d4 fix compiler warning (fix #32640) (#32642) 21 July 2019, 02:07:22 UTC
6f4b6fb allow for newlines in splitdrive (#32543) 20 July 2019, 21:39:24 UTC
e1439a3 add rdiv! for Cholesky(Pivoted) (#32594) * add rdiv! for Cholesky(Pivoted) * also test L-branches 20 July 2019, 15:24:05 UTC
b9b099f fix #32620, crash when assigning to static parameter (#32623) 20 July 2019, 15:19:19 UTC
bb8fefb Avoid `typemax` checks for non-standard integers (#32631) 20 July 2019, 03:31:21 UTC
5c7ed66 Random,threads: allocate state at runtime for each thread (#32407) The `Random.GLOBAL_RNG` is now a singleton placeholder object which implements the prior `Random` public API for MersenneTwister as a shim to support existing clients until Julia v2.0. 19 July 2019, 21:28:01 UTC
79a5793 Clarify that MARCH should be set in Make.user (#32621) I know this make seem like a somewhat redundant documentation addition, but when building julia I was confused by this and thought I was supposed to set `MARCH` in `Make.inc`, not `Make.user` So I thought this may help others. 18 July 2019, 23:22:56 UTC
adbb1fe fix ast doc typo (#32619) 18 July 2019, 09:35:35 UTC
0a12944 Fix #32579 - Issue in typeconstraint accumulation (#32605) The bug here is a bit subtle, but perhaps best illustrated with the included test case: ``` function f32579(x::Int64, b::Bool) if b x = nothing end if isa(x, Int64) y = x else y = x end if isa(y, Nothing) z = y else z = y end return z === nothing end ``` The code just after SSA conversion looks like: ``` 2 1 ─ goto #3 if not _3 3 2 ─ %2 = Main.nothing::Core.Compiler.Const(nothing, false) 5 3 ┄ %3 = φ (#2 => %2, #1 => _2)::Union{Nothing, Int64} │ %4 = (%3 isa Main.Int64)::Bool └── goto #5 if not %4 6 4 ─ %6 = π (%3, Int64) └── goto #6 8 5 ─ %8 = π (%3, Nothing) 10 6 ┄ %9 = φ (#4 => %6, #5 => %8)::Union{Nothing, Int64} │ %10 = (%9 isa Main.Nothing)::Bool └── goto #8 if not %10 11 7 ─ %12 = π (%9, Nothing) └── goto #9 13 8 ─ %14 = π (%9, Int64) 15 9 ┄ %15 = φ (#7 => %12, #8 => %14)::Union{Nothing, Int64} │ %16 = (%15 === Main.nothing)::Bool └── return %16 ``` Now, we have special code in SROA (despite it not really being an SROA transform) that looks at `===` and replaces it by a nest of phis of booleans. The reasoning for this transform is that it eliminates a use of a value where we only care about the type and not the content, thus making it more likely that the value will subsequently be eligible for SROA. In addition, while it goes along resolving which values feed into any particular phi, it accumulates and type conditions it encounters along the way. Thus in the example above, something like the following happens: - We look at %14, which πs to %9 with an Int64 constraint, so we only consider the #4 predecessor for %9 (due to the constraint), until we get to %3, where we again only consider the #1 predecessor, where we find the argument (of type Int64) and conclude the result is always false - Now we pop the next item of the stack from our original phi, look at %12, which πs to %9 with a Nothing constraint. At this point we used to terminate the search because we already looked at %9. However, crucially, we looked at %9 only with an Int64 constraint, so we missed the fact that `nothing` was in fact a possible value for this phi. The result was a missing entry in the generated phi node: ``` 1 ─ goto #3 if not b 2 ─ %2 = Main.nothing::Core.Compiler.Const(nothing, false) 3 ┄ %3 = φ (#1 => false)::Bool │ %4 = φ (#2 => %2, #1 => _2)::Union{Nothing, Int64} │ %5 = (%4 isa Main.Int64)::Bool └── goto #5 if not %5 4 ─ %7 = π (%4, Int64) └── goto #6 5 ─ %9 = π (%4, Nothing) 6 ┄ %10 = φ (#4 => %3, #5 => %3)::Bool │ %11 = φ (#4 => %7, #5 => %9)::Union{Nothing, Int64} │ %12 = (%11 isa Main.Nothing)::Bool └── goto #8 if not %12 7 ─ goto #9 8 ─ nothing::Nothing 9 ┄ %16 = φ (#7 => %10, #8 => %10)::Bool └── return %16 ``` (note the missing #2 predecessor in phi node %3), which would result in an undefined value at runtime, though in this case LLVM would have taken advantage of that to just return 0: ``` define i8 @julia_f32579_16051(i64, i8) { top: ; @ REPL[1]:15 within `f32579' ret i8 0 } ``` Compare this now to the optimized IR with this patch: ``` 1 ─ goto #3 if not b 2 ─ %2 = Main.nothing::Core.Compiler.Const(nothing, false) 3 ┄ %3 = φ (#2 => true, #1 => false)::Bool │ %4 = φ (#2 => %2, #1 => _2)::Union{Nothing, Int64} │ %5 = (%4 isa Main.Int64)::Bool └── goto #5 if not %5 4 ─ %7 = π (%4, Int64) └── goto #6 5 ─ %9 = π (%4, Nothing) 6 ┄ %10 = φ (#4 => %3, #5 => %3)::Bool │ %11 = φ (#4 => %7, #5 => %9)::Union{Nothing, Int64} │ %12 = (%11 isa Main.Nothing)::Bool └── goto #8 if not %12 7 ─ goto #9 8 ─ nothing::Nothing 9 ┄ %16 = φ (#7 => %10, #8 => %10)::Bool └── return %16 ``` The %3 phi node has its missing entry and the generated LLVM code correctly returns `b`: ``` define i8 @julia_f32579_16112(i64, i8) { top: %2 = and i8 %1, 1 ; @ REPL[1]:15 within `f32579' ret i8 %2 } ``` 17 July 2019, 18:36:52 UTC
261e2b9 make `IOStream` thread-safe (#32421) 17 July 2019, 16:33:21 UTC
29c08a7 fix #22298, race condition setting compiled function pointers (#32604) Should also fix e.g. the failure in https://build.julialang.org/#/builders/22/builds/3876 17 July 2019, 01:53:40 UTC
b4a358b Drop extra word (#32598) [skip ci] 16 July 2019, 23:49:38 UTC
80361a7 fix #32575, channel trying to switch to task on another thread (#32584) 16 July 2019, 20:18:50 UTC
9b987cc Fix size of buffer passed to GetModuleFileNameW. (#32596) 16 July 2019, 20:06:32 UTC
dfc645c avoid finalizing LLVMContext on exit (#32588) This avoids a possible crash if another thread is trying to compile something. 16 July 2019, 18:09:38 UTC
f578ada adjust some gc heuristics (#32556) - trigger a full collection if live size grows a lot and stays there - use a larger minor collect interval based on live_bytes helps #32472 and #28986 16 July 2019, 03:26:09 UTC
5366148 threads: fix scheduler variable confusion (#32551) gotta keep system vs runtime and global vs local straight! fix #32511 16 July 2019, 03:09:54 UTC
ba03920 Merge pull request #32518 from JuliaLang/vc/nvptx_no_patches [LLVM8] Prepare debuginfo emission for NVPTX 15 July 2019, 22:44:54 UTC
cb37580 fix the docstring of min_enabled_level (#32573) 15 July 2019, 15:41:24 UTC
fe9de99 Stop detaching process for precompiling modules. (#32384) This means that interrupting the precompilation (ctrl-c) or killing Julia will kill the process that is doing the precompilation. This is useful because currently, interrupting julia while it is precompiling a module will leave that precompilation running in the background. For large packages that take a long time to precompile, this can be frustrating, especially because the user most likely interrupted the precompilation because they _didn't_ want it to happen (e.g. maybe they realized they forgot to change something in the code). 15 July 2019, 05:14:09 UTC
a1165b8 threads,win64: fix safepoint handler (#32570) On Win64, we need the top stack frame to have a personality to catch exceptions in the event that we run into a GC safepoint (such as jl_mutex_wait) before we have Julia code on the stack. 14 July 2019, 21:21:34 UTC
7b53c0d Use variable Acolptr consistently (#32576) 14 July 2019, 16:04:26 UTC
faefe2a Fix PDF doc build. (#32563) Julias Markdown treats double backticks as inline math, which makes the pdf doc build fail due to the $. 13 July 2019, 08:34:33 UTC
2964312 fix #21360, make global bindings thread safe (#32370) 12 July 2019, 21:38:12 UTC
59ee493 Fix typo for `trans` comparison in densemv (#32561) 12 July 2019, 15:41:12 UTC
24efaa4 Fix various alignment violations (#32513) The C standard forbids accessing pointers that are not sufficiently aligned for their base type under the penalty of undefined behavior. On most architectures we support, this doesn't make a difference (except if the compiler tries to SIMD things), but it does matter on some (e.g. SAFE_HEAP mode in wasm), so make some progress on using the proper unaligned accessors in various places that use underaligned pointers. 11 July 2019, 19:19:56 UTC
c690489 io: corrected error handling for streams (#32429) After #32309, we became much more eager to forget about normal errors and more eager to throw an EOFError at the wrong place. This is intended to fix that oversight. 11 July 2019, 19:11:17 UTC
1a37227 thread safety fix in compiling regexes (#32544) 11 July 2019, 18:29:13 UTC
f5a50be Future doc (#31737) 10 July 2019, 15:11:31 UTC
073cbbb Add empty(::NamedTuple) (#32534) 10 July 2019, 01:50:27 UTC
acc2b99 Set dwarf source language to Julia 09 July 2019, 21:39:13 UTC
46f8365 Make debuginfo emission configurable 09 July 2019, 21:38:59 UTC
13db0dc partr: fix rare segfault (#32530) The write to 'prio' might be arbitrarily delayed, after some other thread has already popped the task. This commit ensures that all writes to that field are always behind the same lock as the modification to the queue itself. fix #32520 09 July 2019, 20:32:41 UTC
f18808d doc: fix typo in sort! docstring (#32533) 09 July 2019, 08:56:09 UTC
f552fb2 Add methods min, max, minmax taking only single Dates.AbstractTime (#32525) Methods `min`, `max` and `minmax` should also be able to take just one `Dates.AbtractTime` argument. See discussion: https://discourse.julialang.org/t/max-and-min-of-single-dates/26074 08 July 2019, 18:17:40 UTC
33a6b99 rational: `signbit(den)` instead of `sign(den) < 0` (#32523) 08 July 2019, 15:25:49 UTC
a25e722 fix #32499, regression in struct expr in assignment rhs (#32512) caused by c6c3d72d1cbddb3d27e0df0e739bb27dd709a413 This is a bit of a hack that just moves things around a bit to get a structure more likely to work. 08 July 2019, 10:03:05 UTC
d611e1c docs: Change `1:size(A, i)` to `axes(A, i)` in at-nloops docs (#32519) 08 July 2019, 06:12:20 UTC
c351391 Yet another LLVM patch (#32506) The previous iteration of this wasn't quite right and I didn't catch it before merging it in julia (or upstream for that matter), so here's the fixup patch. 07 July 2019, 20:13:54 UTC
89baf83 added *larf and *larfg LAPACK wrappers (#32390) * added LAPACK wrappers for *larf and *larfg routines * add fixes suggested by vtjnash 06 July 2019, 21:10:43 UTC
a9ad6c2 fix #32488, type intersection regression (#32509) Issue was caused by 74305bf2c43546bf76843b72ff0d268a3fe16920, so this reverts part of the new logic from there. 06 July 2019, 15:55:01 UTC
back to top