swh:1:snp:a72e953ecd624a7df6e6196bbdd05851996c5e40

sort by:
Revision Author Date Message Commit Date
c74262c Allow external CodeInstances to be added to the execution engine As of #35831, we've had the ability to cache CodeInstances in an external cache and to replace that cache during jl_generate_native (e.g. for GPU compilation). This extends the same capability to CodeInstances to be added to the execution engine. 01 July 2020, 20:35:07 UTC
d5cf73f Merge pull request #35845 from JuliaLang/kf/static_errors Inference annotations that can be read by an external tool 01 July 2020, 20:22:20 UTC
674993f Merge pull request #36477 from JuliaLang/kf/remwat Remove outdated restriction on Type{} calls in abstract interpretation 01 July 2020, 18:57:56 UTC
ad94873 Merge pull request #35564 from JuliaLang/vc/mlir add build-system support for MLIR 01 July 2020, 18:17:31 UTC
bb9361f Missing tests for LDLt (#36491) 01 July 2020, 07:32:40 UTC
9985666 A few missing tests for Tri/SymTriDiag (#36487) 01 July 2020, 07:32:08 UTC
b44e0f3 Two small SVD tests (#36490) 01 July 2020, 06:56:37 UTC
3b64075 Update comment still refering to [pty_]{master,slave} (#36489) 01 July 2020, 06:34:26 UTC
2fae2fb Clarify that path to julia can be set (#36415) 01 July 2020, 02:45:49 UTC
16ba0dd Fix exception stack lowering in finally handlers (#36480) When using `return` or `break` nested inside `finally` handlers, exception stack lowering failed to pop exceptions from the stack correctly: * For `return`, the exception stack was not popped at all. If done inside a loop this could eventually cause the runtime to run out of memory. * For `break`, the exception stack was popped too early, causing subtle inconsistency in intermediate finally handlers. Fix these issues by storing the current exception token stack with the current finally handler information and using it to pop the stack before jumping into the finally block. Fixes #34579 01 July 2020, 02:20:06 UTC
e0ed273 Inference annotations that can be read by an external tool This builds on top of #35831, letting inference emit a custom message whenever it gives up on infering something. These messages are intended to be displayed by external tools, either to debug what inference is doing (e.g. for Cthulhu) or, if an external compiler needs to disallow certain kinds of missing information (e.g. no dynamic dispatch on GPUs), can be used to improve diagnostics. This is mostly a proof of concept, I think these messages/hooks need to be a bit richer for a full solution, though I think this can be already useful if we hook up something like Cthulhu. As a proof of concept, I hacked up a 10 line function that reads these messagse. It works something like the following: ``` function bar() sin = eval(:sin) sin(1) end foo() = bar() ``` ``` julia> Compiler3.analyze_static(Tuple{typeof(foo)}) In function: bar() ERROR: The called function was unknown 1| function bar() 2| sin = eval(:sin) => sin(1) 4| end [1] In foo() ``` The reason this needs to sit on top of #35831 is that it needs to run with a completely fresh cache, which #35831 provides the primitives for. Otherwise, while you could still get the annotations out, that would only work the first time something is inferred anywhere in the system. With a fresh cache, everything is analyzed again, and any messages like these that are opted in to can be collected. 01 July 2020, 00:17:11 UTC
4bc394d Allow AbstractInterpreters to request preserving trees As well as turning off optimizations. This is useful for Cthulhu to be able to request all unoptimized, noncompressed CodeInfos and correlate them with inference remarks (see next commit). 01 July 2020, 00:17:11 UTC
90e70ed Add Unicode dependency to REPL (#36493) 30 June 2020, 22:27:50 UTC
0a4f357 Respect memory constraints during init. (#36479) 30 June 2020, 21:55:33 UTC
75c3d6d Two small SVD tests 30 June 2020, 19:42:49 UTC
c94e8d2 Fix link in docstring of `big()` (#36375) There are two `BigFloat` docstrings: for the type and for the method (constructor). This changes the link target from the former to the latter. 30 June 2020, 18:31:51 UTC
e2dce5e Test.jl: use stdout context when stringyfing the backtrace (#36472) 30 June 2020, 18:29:35 UTC
68b6119 fix REPL test for completions (#36471) 30 June 2020, 18:25:36 UTC
aac1d68 [contrib/mac/app] Improve `renotarize_dmg.sh` (#36456) Add more error checking, allow direct pasting in of `s3://` URLs 30 June 2020, 17:41:15 UTC
da9325b Remove superflous method lookup in inlining (#36468) This code used to only do one method lookup, but in 8ca6e8d got changed to one method lookup per union split, to better match what inference does, only doing the big method lookup in the case where we want to inline a non-dispatchtuple signature. I'd like to go one step further and have inference forward all method lookup results to the optimizer. However, as a result the fallback to the big method lookup is problematic, because that same method lookup is not performed during inference. Luckily, we don't actually need it, we already know which method will get inlined, so all we need to do is to recompute the signature and type parameters, which is a simple call to type intersection. This code path isn't hit very often, but regardless of any future refactors it is also a performance improvement, since it was already doing this intersection internally, but this way gets to skip all the additional work of the method lookup. As a side node, there's an additional question of whether inference should be doing this one big method lookup or multiple. However, Jameson points out that this would currently pessimize some important cases, because of the following: ``` julia> Core.Compiler.switchtupleunion(Tuple{Union{Int,Float64},Union{Int,Float64}}) 4-element Array{Any,1}: Tuple{Float64,Float64} Tuple{Int64,Float64} Tuple{Float64,Int64} Tuple{Int64,Int64} julia> Core.Compiler.switchtupleunion(typeintersect(Tuple{Union{Int,Float64},Union{Int,Float64}}, Tuple{T,T} where T)) 1-element Array{Any,1}: Tuple{T,T} where T<:Union{Float64, Int64} ``` and potentially some other cases. Regardless, either way is fine for my planned refactor as long as the method lookups during inference match those during inlining. 30 June 2020, 17:40:41 UTC
f935125 Move `Libdl` into `Base` (#35628) 30 June 2020, 17:03:16 UTC
6b2c7f1 Remove unnecessary restriction to `StridedVecOrMat` (#35929) * Remove unnecessary restriction to `StridedVecOrMat` The "Strided array interface" https://docs.julialang.org/en/v1/manual/interfaces/#man-interface-strided-arrays-1 means that this is useful beyond these types * Update adjtrans.jl * Add tests for adj/trans strides * Add tests, change strides(::Adjoint{<:Any,<:AbstractVector}) definition * stride(::AbstractrArray, k) for all k, add ConjPtr * Remove ConjPtr * Always throw an error if strides is not implemented * Update abstractarray.jl * Update blas.jl * Remove k < 1 special case * Also widen elsize to AbstractVecOrMat * Use strides for dim > ndims * Update stdlib/LinearAlgebra/test/blas.jl Co-authored-by: Matt Bauman <mbauman@gmail.com> 30 June 2020, 14:30:50 UTC
b8110f8 add BLAS.get_num_threads (#36360) Co-authored-by: Okon Samuel <39421418+OkonSamuel@users.noreply.github.com> Co-authored-by: Takafumi Arakaki <aka.tkf@gmail.com> 30 June 2020, 07:02:08 UTC
e0012d4 Use jl_method_table_for in abstract_call_gf_by_type In #35845, `@vtjnash` was saying that this function tried to re-implement jl_method_table_for, but badly. Try to just use it directly and see if anything breaks (Base tests seem to pass). 30 June 2020, 01:53:23 UTC
0881288 Remove outdated restriction on Type{} calls in abstract interpretation `@vtjnash` said in #35845 that he didn't know what this code was for and didn't think it was necessary. Since he's the one that added it and the comment says it's about backedges, I'm inclined to believe him :). In any case, removing it passes base tests, so let's try it. 30 June 2020, 01:15:03 UTC
39c278b Canonicalize IR to disallow throwing GlobalRef in value position (#36450) In anticipation of making the SSA IR more of an interface that packages can use to implement custom compiler transformation, I'd like to do some cleanup first. The is the first of the items on my list: Disallowing GlobalRef in value position if it could potentially throw (because the binding doesn't exist yet). This is done as part of SSA conversion, because we don't know whether a binding will exist during parsing/lowering and we don't modify the IR at all between lowering and the end of type inference, so doing it during SSA conversion is the first possible opportunity. The reason to do this is to simplify transformation passes that want to replace calls with sequences of other instructions. By moving those GlobalRef that could potentially throw into statement position, the order of argument evaluation does not matter (this isn't quite true yet due to static parameters, but I'd like to fix that in a separate commit). I think that's a desirable property to simplify the life os pass authors. 29 June 2020, 22:05:39 UTC
cd13404 Fix some invalidations during Julia's bootstrap (#36427) Also add nospecialize to with_output_color 29 June 2020, 22:03:41 UTC
4cf7267 Core.show: make printing of Method/MethodInstance more precise (#36431) 29 June 2020, 21:55:00 UTC
7622bae Fix and test LLVM IR for issue #36422 (#36435) 29 June 2020, 19:36:32 UTC
223f656 fix #36391, ensure anything `precompile`d ends up in output (#36451) 29 June 2020, 18:55:25 UTC
0b331c7 Merge pull request #36453 from JuliaLang/teh/REPL_inference Eliminate more REPL invalidations 29 June 2020, 18:49:28 UTC
a5af123 Use NFD-normalized identifiers to match LaTeX hints (#36382) * Add test for x\dot help (#36378) (The test currently fails.) * Decompose identifiers in REPL LaTeX matching This fixes the help for e.g. x\dot. Closes #36378 29 June 2020, 16:55:13 UTC
6185d24 Add a "context" hook for generic calls during codegen (#36398) This adds a new context field that rewrites generic calls like `apply_generic(f, (args...,))` to `apply_generic(context, (f, args...))` during codegen. The intention here is to allow external AbstractInterpreters to provide custom implementations of apply_generic (usually recursing analysis using the same interpreter, but other behavior may be desired). This is a bit of a stopgap solution. I think in the fullness of time, we'll probably want completely custom codegen for generic callsites, to avoid the potential of a double-dispatch impact, but for the moment this allows prototyping. 28 June 2020, 22:42:25 UTC
9d71d37 Avoid potential buffer overflow/missing zero termination of string (#36408) Co-authored-by: Elliot Saba <staticfloat@gmail.com> 28 June 2020, 00:38:11 UTC
fe934f0 Improve docstring for Base.Math.exponent (#36438) Co-authored-by: Stefan Karpinski <stefan@karpinski.org> 27 June 2020, 18:08:34 UTC
259ff82 Add typeassert to prevent `cconvert` invalidation in `raw!` 27 June 2020, 12:18:24 UTC
e78efc6 Improve inference results in LineEdit 27 June 2020, 12:17:44 UTC
d762e8c gf: improve ordering of operations based on performance estimates (#36436) In the last commit, I didn't expect NamedTuple to hammer our performance, but was starting to notice performance problems with trying to call constructors. It's somewhat violating our best-practices in two common cases (both the constructor and structdiff functions are dispatching on non-leaf types instead of values). That was putting a lot of strain on the cache, and so it forms a good test case. Keeping those cases out of the cache, and searching the cache in a more suitable order (significant mainly for constructors because there are always so many of them), offsets that--and seems to possibly make us slightly faster overall as a bonus because of that effect! 26 June 2020, 20:17:31 UTC
ab520c7 Add hook in inference recursion resolution for external AbstractInterpreter (#36401) This extends hookability to the same-frame comparison in inference's recursion cycle detection. The case I ran into that made this necessary is a recursive, nested AD transform. In this case, inference must detect if two frames have different orders of derivatives (e.g. the primitive for `-`, again calls `-`; the external interpreter makes sure that inference results for these end up in different caches). 26 June 2020, 14:31:02 UTC
063525f Add passthrough for non-Markdown docs (#36091) 26 June 2020, 09:24:36 UTC
59b8dde Fix pointer to no longer assume contiguity (#36405) * Fix pointer to no longer assume contiguity 26 June 2020, 09:21:35 UTC
29e1454 Merge pull request #36359 from JuliaLang/rf/fix-bitvector-deleteat deleteat!(::BitVector, inds) : check bounds for the first passed index 25 June 2020, 20:18:09 UTC
5bb1053 Ensure string-hashing is defined before it gets used (#36411) An analysis of invalidations during bootstrap revealed that `log_record_id` calls `hash` on strings, and in principle it is used before the specialized methods are defined. Since the new methods change the value of the hash is expected to change, this could cause subtle bugs. It seems safer to define the hash methods at around the first time they could conceivably be defined. 25 June 2020, 17:18:09 UTC
3bbb582 Make compilecache atomic (#36416) When several Julia processes compile the same package concurrently (e.g. during a cluster run), they can conflict on the compile cache file. This change makes a Julia process create a compile cache in a temporary file and atomically rename it to the final cache file. Co-authored-by: Takafumi Arakaki <tkf@@users.noreply.github.com> 25 June 2020, 17:16:37 UTC
a850b7e add a test for #30739 (#36395) 25 June 2020, 17:14:53 UTC
0a661f9 Fix broken links in docstring of `repeat` (#36376) This changes the link targets of `^` parseable and more specific. 25 June 2020, 17:08:40 UTC
32b1b14 fix and de-dup cached calls to `methods_by_ftype` in compiler (#36404) 25 June 2020, 17:06:27 UTC
0a70d42 ml-matches: skip unnecessary work, when possible (#36413) If the environment is trivial (empty) and the type is a dispatch tuple, we know the intersection result is trivial, and can skip it. 25 June 2020, 15:27:52 UTC
db94a7d gf: fix some issues with the move from using a tree to a hash lookup of leaf types (#36413) Addresses an off-by-one in the type lookup, ensures we look at at all entries when doing invalidation, and allows putting any Type{T} object also in the cache (I forgot these always had `simplesig`, so we needed to handle that case too to receive the benefit for them). 25 June 2020, 15:27:29 UTC
b15f6ad Add news and manual entry for sincospi (#36403) 25 June 2020, 08:45:44 UTC
52c55d7 Check axes in Array(::AbstractArray) (fixes #36220) (#36397) 24 June 2020, 21:13:27 UTC
3604a25 add versions of `code_typed` and `which` that accept tuple types (#36389) 24 June 2020, 20:56:27 UTC
1ba71f9 Fix spelling of readdir. (#36409) 24 June 2020, 16:58:21 UTC
6cd329c add sincospi (#35816) 23 June 2020, 20:23:39 UTC
9b2c6b2 fix showing methods with unicode gensymed variable names (#36396) 23 June 2020, 19:16:55 UTC
b594172 Add doctest: eachslice (#36386) * add doctests for eachslice * update doctest eachslice 23 June 2020, 17:30:10 UTC
8db9495 fix documentation typo ("Ingeger") 23 June 2020, 15:36:57 UTC
fd6eee7 Refactor `abstract_eval` to separate out statements and values (#36350) In preparation for adding the ability for statements to return additional info, while values will only ever have a type. 23 June 2020, 15:31:46 UTC
be72a57 Merge pull request #36323 from JuliaLang/teh/io_field_spec Improve inferrability of stream IO 23 June 2020, 01:43:45 UTC
e0babe8 fix return type of `get!` on `IdDict` (#36383) 23 June 2020, 00:19:10 UTC
76a2e36 Allow single option with REPL.TerminalMenus (#36369) 22 June 2020, 10:29:23 UTC
f6d34c3 fix miscellaneous doc typos (#36370) 20 June 2020, 07:54:21 UTC
35c1f87 fix #36230, more efficient lowering of `if` with a chain of `&&` (#36355) 19 June 2020, 23:16:11 UTC
00c41cc Remove address spaces during IR printing. (#36358) Respect the strip_ir_metadata/raw flags. 19 June 2020, 23:14:51 UTC
4db59da Merge pull request #36208 from JuliaLang/jb/mm3 set default max_methods to 3 19 June 2020, 20:58:08 UTC
eb2bcb1 Use haslength to check for HasShape and HasLength traits (#36356) 19 June 2020, 20:45:04 UTC
3e2effd [ci skip] Typo fix: emove space before comma (#36357) 19 June 2020, 16:00:10 UTC
baa9b27 set default max_methods to 3 19 June 2020, 15:07:24 UTC
96ff7f0 make `tmerge` more precise by keeping common parameters 19 June 2020, 15:06:35 UTC
73df43a add some helpful type assertions to `size` and `rand` 19 June 2020, 14:59:13 UTC
ca4a895 deleteat!(::BitVector, inds) : check bounds for the first passed index 19 June 2020, 11:05:40 UTC
d6d5208 use ReturnNode, GotoIfNot, and Argument more consistently in IR (#36318) 19 June 2020, 03:52:02 UTC
5142abf Add Release Notes back to the html version in the same place (#36333) as before and to the PDF version as well. In the PDF version, they are at the back of the document as the last Part. 19 June 2020, 01:37:22 UTC
92197a7 Merge pull request #36166 from JuliaLang/jn/ml-matches-leaf-cache Create a leaf-types cache (so we'll first hit the call-site cache LRU, then the TypeMap search, then this hash lookup, before going to the defs list), and use this new cache for the ml-matches search also (when applicable/useful). 19 June 2020, 01:32:55 UTC
4d062a5 Pass IO to helpmode function (#36289) 18 June 2020, 19:45:37 UTC
3c2a6e8 show: differentiate TypeName and wrapper when printing (#36303) 18 June 2020, 19:43:59 UTC
d19a279 macOS lazily saves the AVX512 context (#36330) 18 June 2020, 19:42:11 UTC
6385107 Consider terminal emacs in EDITOR_CALLBACKS before graphical (#36346) Since the regex r"\bemacs" matches the cmd `emacs -nw`, the regex r"\bemacs\b.*\s(-nw|--no-window-system)\b" should be considered in the EDITOR_CALLBACKS list before it. Without this change, when JULIA_EDITOR="emacs -nw", julia tries to open the editor with run(...; wait=false) which causes the error: emacs: standard input is not a tty or for emacsclient: emacsclient: could not get terminal name emacsclient: error executing alternate editor "" 18 June 2020, 19:41:27 UTC
a9dd7f3 ' ,' -> ', ' (#36349) 18 June 2020, 19:39:10 UTC
1f8b442 Add Iterators.map (#34352) 18 June 2020, 18:58:23 UTC
e96728c FileWatching: cleanup timers on return (#36301) Following my own advice at #36217. Avoids a minor temporary resource leak. 18 June 2020, 18:23:33 UTC
ee0621f Fix: lastindex for Numbers (#36314) * Fix: lastindex for Numbers * Boundcheck for lastindex numbers * tests for lastindex, firstindex for numbers * include example test from #36311 18 June 2020, 17:04:31 UTC
9cbe145 Add sizehint! to Dict constructor (#35254) * Add sizehint to Dict constructor * Check iterator has length 18 June 2020, 15:45:32 UTC
5420dd2 allow `redirect_std*` to `devnull` (#36136) (#36146) 18 June 2020, 13:22:41 UTC
4d94a63 Add `httpbin.julialang.org` AWS API Gateway config This serves as a backup of the AWS API Gateway configuration hosted at `httpbin.julialang.org` 18 June 2020, 08:54:51 UTC
96fc2aa Switch `httpbin` tests over to JuliaLang-hosted `httpbin` mock server (#36336) 18 June 2020, 08:33:53 UTC
d5b47a0 Test SingularException throw for naivesub (#36331) 18 June 2020, 05:45:19 UTC
a985bed Delete dead :& code (#36337) We used to use & in ccall, but that's been dead for a long time. I believe this code is just a leftover relic. 18 June 2020, 02:40:32 UTC
96e7647 fix introspection macros with getproperty (#36286) 17 June 2020, 22:08:30 UTC
731126d Merge pull request #36260 from JuliaLang/jn/codegen-unglobal removes more global state from codegen 17 June 2020, 21:24:51 UTC
65c09e3 Revert "Update to GMP 6.2.0 (#36309)" (#36328) This reverts commit c54a6ea77b8475598744c7a134a04318bdbe5ba6. 17 June 2020, 21:23:58 UTC
8ca6e8d rearrange `assemble_inline_todo!` to handle union splitting in the outer loop (#35891) 17 June 2020, 19:41:33 UTC
43fd66c Remove NEWS.md from the PDF of the manual (#36312) * Partial fix for #35495 This removes the NEWS.md link at the bottom of the first page of the manual. Given that we link to it prominently on top of the page, I feel this is ok. This will remove Section II of the PDF manual, where the release notes take 15 pages (because ofthe way markdown gets converted to PDF). * Better layout for the generated PDF 17 June 2020, 18:13:40 UTC
26de664 codegen: use constant placeholder objects instead of realizing LLVM functions We already had prepare_global/prepare_call functions. This simply lets us use that to allocate these on-demand instead of keeping around a global copy of them to template from. 17 June 2020, 17:02:29 UTC
b4c570d codegen: remove the shared "shadow_module" state 17 June 2020, 17:02:29 UTC
44f88a8 Assert type for `displaysize` 17 June 2020, 09:14:49 UTC
6a69baa Remove obsolete field type assertions 17 June 2020, 09:14:49 UTC
7d9bfb7 Formal specification of field types for abstract IO types Most concrete IO types declare that a subset of their fields are other abstract IO types. As a result, if `obj1::IO`, and `obj2 = obj1.fieldwithabstracttype`, then inference has no way of knowing what type `obj2.status` returns. When `obj2.status` is used as an argument for `Base.somefunction`, this leaves such code vulnerable to invalidation via package specializations of `Base.somefunction` even when in practice there is no risk that any IO code will call the new package-supplied method. This provides a more formal interface for three non-exported abstract types: `LibuvStream`, `LibuvServer`, and `AbstractPipe`. 17 June 2020, 09:14:42 UTC
bf3ed57 pty_{master,slave} -> pt{m,s} (#36315) We decided to get rid of the master/slave terminology in Julia in #30058. However, we decided to keep it for PTYs, where the terminology is imposed upon us by POSIX (and thus changing it would be confusing for people who might need to read up on the POSIX definitions of these concepts). It was recently suggested to revisit this, by renaming to ptm and pts instead, which also fit well (as the devies that the fds refer to are `/dev/ptmx` and `/dev/pts` respectively), are googleable (`pty pts` will yield the correct man page) and will probably need to remain even if POSIX adjusts their terminology, since they're part of the ABI (presumably they'll be backronymed to whatever terminology ends up winning). This patch does this rename. 17 June 2020, 02:10:26 UTC
0a2644a optimizer: add Instruction/InstructionStream abstraction (#34306) 16 June 2020, 22:59:56 UTC
back to top