Skip to content

Commit 87b9e2f

Browse files
committed
Merge commit '42b3d905f8a89accdf79ae79064a3899978f8053' into anj/cholmod
Conflicts: base/sparse/cholmod.jl
2 parents e8264db + 42b3d90 commit 87b9e2f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+1216
-693
lines changed

ARM.inc

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
1-
FORCE_ARMV7=1
2-
LLVM_ASSERTIONS=1
1+
BFORCE_ARMV7=1
2+
3+
override LLVM_ASSERTIONS=1
34
LLVM_FLAGS+="--with-cpu=cortex-a9 --with-float=hard --with-abi=aapcs-vfp --with-fpu=neon --enable-targets=arm --enable-optimized --enable-assertions"
45

56
override OPENBLAS_DYNAMIC_ARCH=0
67
override OPENBLAS_TARGET_ARCH=ARMV7
78
override USE_BLAS64=0
89

9-
override LLVM_VER=3.5.0
10+
override LLVM_VER=3.5.1
1011

1112
override USE_SYSTEM_FFTW=1
1213
override USE_SYSTEM_GMP=1
1314
override USE_SYSTEM_MPFR=1
15+
16+
JCFLAGS += -fsigned-char

CONTRIBUTING.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ A useful bug report filed as a GitHub issue provides information about how to re
2525
- Try some simple debugging techniques to help isolate the problem.
2626
- Try running the code with the debug build of Julia with `make debug`, which produces the `usr/bin/julia-debug`.
2727
- Consider running `julia-debug` with a debugger such as `gdb` or `lldb`. Obtaining even a simple [backtrace](http://www.unknownroad.com/rtfm/gdbtut/gdbsegfault.html) is very useful.
28-
- If Julia segfaults, try following [these debugging tips](https://gist.github.com/staticfloat/6188418#segfaults-during-bootstrap-sysimgjl) to help track down the specific origin of the bug.
28+
- If Julia segfaults, try following [these debugging tips](http://julia.readthedocs.org/en/latest/devdocs/backtraces/#segfaults-during-bootstrap-sysimg-jl) to help track down the specific origin of the bug.
2929

3030
2. If the problem is caused by a Julia package rather than core Julia, file a bug report with the relevant package author rather than here.
3131

DISTRIBUTING.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ Notes on BLAS and LAPACK
127127

128128
Julia builds OpenBLAS by default, which includes the BLAS and LAPACK
129129
libraries. On 32-bit architectures, Julia builds OpenBLAS to use
130-
32-bit integers, while on 64-bit architectuers, Julia builds OpenBLAS
130+
32-bit integers, while on 64-bit architectures, Julia builds OpenBLAS
131131
to use 64-bit integers (ILP64). It is essential that all Julia functions
132132
that call BLAS and LAPACK API routines use integers of the correct width.
133133

NEWS.md

+19-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ New language features
3030
Language changes
3131
----------------
3232

33+
* `[x,y]` constructs a vector of `x` and `y` instead of concatenating them
34+
([#3737], [#2488], [#8599]).
35+
3336
* `error(::Exception)` and `error(::Type{Exception})` have been deprecated
3437
in favor of using an explicit `throw` ([#9690]).
3538

@@ -100,7 +103,7 @@ Library improvements
100103

101104
* Symmetric and Hermitian immutables are now parametrized on matrix type ([#7992]).
102105

103-
* New `ordschur` and `ordschur!` functions for sorting a schur factorization by the eigenvalues.
106+
* New `ordschur` and `ordschur!` functions for sorting a schur factorization by the eigenvalues. ([#8467],[#9701])
104107

105108
* Givens type doesn't have a size anymore and is no longer a subtype of AbstractMatrix ([#8660])
106109

@@ -178,7 +181,7 @@ Deprecated or removed
178181

179182
* `median` and `median!` no longer accept a `checknan` keyword argument ([#8605]).
180183

181-
* `inf` and `nan` are now deprecated in favor of `T(Inf)` and `NaN`, respectively ([#8776]).
184+
* `inf` and `nan` are now deprecated in favor of `T(Inf)` and `T(NaN)`, respectively ([#8776]).
182185

183186
* `oftype(T::Type, x)` is deprecated in favor of `convert(T,x)` (or `T(x)`).
184187

@@ -941,6 +944,7 @@ Too numerous to mention.
941944
[#2380]: https://github.com/JuliaLang/julia/issues/2380
942945
[#2403]: https://github.com/JuliaLang/julia/issues/2403
943946
[#2468]: https://github.com/JuliaLang/julia/issues/2468
947+
[#2488]: https://github.com/JuliaLang/julia/issues/2488
944948
[#2515]: https://github.com/JuliaLang/julia/issues/2515
945949
[#2516]: https://github.com/JuliaLang/julia/issues/2516
946950
[#2597]: https://github.com/JuliaLang/julia/issues/2597
@@ -986,6 +990,7 @@ Too numerous to mention.
986990
[#3688]: https://github.com/JuliaLang/julia/issues/3688
987991
[#3697]: https://github.com/JuliaLang/julia/issues/3697
988992
[#3719]: https://github.com/JuliaLang/julia/issues/3719
993+
[#3737]: https://github.com/JuliaLang/julia/issues/3737
989994
[#3759]: https://github.com/JuliaLang/julia/issues/3759
990995
[#3790]: https://github.com/JuliaLang/julia/issues/3790
991996
[#3819]: https://github.com/JuliaLang/julia/issues/3819
@@ -1143,9 +1148,11 @@ Too numerous to mention.
11431148
[#8501]: https://github.com/JuliaLang/julia/issues/8501
11441149
[#8560]: https://github.com/JuliaLang/julia/issues/8560
11451150
[#8578]: https://github.com/JuliaLang/julia/issues/8578
1151+
[#8599]: https://github.com/JuliaLang/julia/issues/8599
11461152
[#8605]: https://github.com/JuliaLang/julia/issues/8605
11471153
[#8624]: https://github.com/JuliaLang/julia/issues/8624
11481154
[#8660]: https://github.com/JuliaLang/julia/issues/8660
1155+
[#8672]: https://github.com/JuliaLang/julia/issues/8672
11491156
[#8712]: https://github.com/JuliaLang/julia/issues/8712
11501157
[#8734]: https://github.com/JuliaLang/julia/issues/8734
11511158
[#8750]: https://github.com/JuliaLang/julia/issues/8750
@@ -1173,12 +1180,22 @@ Too numerous to mention.
11731180
[#9132]: https://github.com/JuliaLang/julia/issues/9132
11741181
[#9133]: https://github.com/JuliaLang/julia/issues/9133
11751182
[#9144]: https://github.com/JuliaLang/julia/issues/9144
1183+
[#9198]: https://github.com/JuliaLang/julia/issues/9198
11761184
[#9249]: https://github.com/JuliaLang/julia/issues/9249
11771185
[#9261]: https://github.com/JuliaLang/julia/issues/9261
11781186
[#9271]: https://github.com/JuliaLang/julia/issues/9271
11791187
[#9294]: https://github.com/JuliaLang/julia/issues/9294
1188+
[#9309]: https://github.com/JuliaLang/julia/issues/9309
11801189
[#9418]: https://github.com/JuliaLang/julia/issues/9418
11811190
[#9425]: https://github.com/JuliaLang/julia/issues/9425
1191+
[#9434]: https://github.com/JuliaLang/julia/issues/9434
11821192
[#9452]: https://github.com/JuliaLang/julia/issues/9452
11831193
[#9569]: https://github.com/JuliaLang/julia/issues/9569
1194+
[#9575]: https://github.com/JuliaLang/julia/issues/9575
11841195
[#9578]: https://github.com/JuliaLang/julia/issues/9578
1196+
[#9690]: https://github.com/JuliaLang/julia/issues/9690
1197+
[#9745]: https://github.com/JuliaLang/julia/issues/9745
1198+
[#9779]: https://github.com/JuliaLang/julia/issues/9779
1199+
[#9957]: https://github.com/JuliaLang/julia/issues/9957
1200+
[#10024]: https://github.com/JuliaLang/julia/issues/10024
1201+
[#10031]: https://github.com/JuliaLang/julia/issues/10031

README.windows.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Instructions for adding fonts to the terminal are available at:
1515

1616
Additionally, rather than sticking with the default command prompt, you may want to use a different terminal emulator program, such as [`Conemu`](https://code.google.com/p/conemu-maximus5/) or [`Mintty`](https://code.google.com/p/mintty/)
1717
(note that running Julia on Mintty needs a copy of `stty.exe` in your `%PATH%` to work properly).
18-
Alternatively, you may prefer the features of a more full-function IDE, such as [`LightTable`](https://github.com/one-more-minute/Jupiter-LT), [`Sublime-IJulia`](https://github.com/quinnj/Sublime-IJulia), or [`IJulia`](https://github.com/JuliaLang/IJulia.jl).
18+
Alternatively, you may prefer the features of a more full-function IDE, such as [`Juno`](http://junolab.org), [`LightTable`](https://github.com/one-more-minute/Jupiter-LT), [`Sublime-IJulia`](https://github.com/quinnj/Sublime-IJulia), or [`IJulia`](https://github.com/JuliaLang/IJulia.jl).
1919

2020

2121
# Binary distribution

base/LineEdit.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -944,7 +944,7 @@ function keymap{D<:Dict}(keymaps::Array{D})
944944
end
945945

946946
const escape_defaults = merge!(
947-
AnyDict([char(i) => nothing for i=[1:26, 28:31]]), # Ignore control characters by default
947+
AnyDict([char(i) => nothing for i=vcat(1:26, 28:31)]), # Ignore control characters by default
948948
AnyDict( # And ignore other escape sequences by default
949949
"\e*" => nothing,
950950
"\e[*" => nothing,

base/REPLCompletions.jl

+79-14
Original file line numberDiff line numberDiff line change
@@ -134,16 +134,79 @@ function complete_path(path::AbstractString, pos)
134134
return matches, nextind(path, pos - sizeof(prefix) - length(matchall(r" ", prefix))):pos, length(matches) > 0
135135
end
136136

137-
function complete_methods(input::AbstractString)
138-
tokens = split(input, '.')
139-
fn = Main
140-
for token in tokens
141-
sym = symbol(token)
142-
isdefined(fn, sym) || return UTF8String[]
143-
fn = fn.(sym)
137+
# Determines whether method_complete should be tried. It should only be done if
138+
# the string endswiths ',' or '(' when disregarding whitespace_chars
139+
function should_method_complete(s::AbstractString)
140+
for c in reverse(s)
141+
if c in [',', '(']
142+
return true
143+
elseif !(c in whitespace_chars)
144+
return false
145+
end
146+
end
147+
false
148+
end
149+
150+
# Returns a range that includes the method name in front of the first non
151+
# closed start brace from the end of the string.
152+
function find_start_brace(s::AbstractString)
153+
braces = 0
154+
r = RevString(s)
155+
i = start(r)
156+
while !done(r, i)
157+
c, i = next(r, i)
158+
if c == '('
159+
braces += 1
160+
elseif c == ')'
161+
braces -= 1
162+
end
163+
braces == 1 && break
164+
end
165+
braces != 1 && return 0:-1
166+
method_name_end = reverseind(r, i)
167+
startind = nextind(s, rsearch(s, non_identifier_chars, method_name_end))
168+
return startind:endof(s), method_name_end
169+
end
170+
171+
# Returns the value in a expression if sym is defined in current namespace fn.
172+
# This method is used to iterate to the value of a expression like:
173+
# :(Base.REPLCompletions.whitespace_chars) a `dump` of this expression
174+
# will show it consist of Expr, QuoteNode's and Symbol's which all needs to
175+
# be handled differently to iterate down to get the value of whitespace_chars.
176+
function get_value(sym::Expr, fn)
177+
sym.head != :. && return
178+
for ex in sym.args
179+
fn = get_value(ex, fn)
180+
fn == nothing && return
144181
end
145-
isgeneric(fn) || return UTF8String[]
146-
UTF8String[string(m) for m in methods(fn)]
182+
fn
183+
end
184+
get_value(sym::Symbol, fn) = isdefined(fn, sym) ? fn.(sym) : nothing
185+
get_value(sym::QuoteNode, fn) = isdefined(fn, sym.value) ? fn.(sym.value) : nothing
186+
get_value(sym, fn) = sym
187+
188+
# Takes the argument of a function call and determine the type of signature of the method.
189+
# If the function gets called with a val::DataType then it returns Type{val} else typeof(val)
190+
method_type_of_arg(val::DataType) = Type{val}
191+
method_type_of_arg(val) = typeof(val)
192+
193+
# Method completion on function call expression that look like :(max(1))
194+
function complete_methods(ex_org::Expr)
195+
args_ex = Any[]
196+
for ex in ex_org.args # First ex is the function name
197+
val = get_value(ex, Main)
198+
val == nothing && return UTF8String[]
199+
push!(args_ex, val)
200+
end
201+
isgeneric(args_ex[1]) || return UTF8String[]
202+
out = UTF8String[]
203+
t_in = tuple([method_type_of_arg(arg) for arg in args_ex[2:end]]...) # Input types
204+
for method in methods(args_ex[1])
205+
# Check if the method's type signature intersects the input types
206+
typeintersect(method.sig[1 : min(length(args_ex)-1, end)], t_in) != None &&
207+
push!(out,string(method))
208+
end
209+
return out
147210
end
148211

149212
include("latex_symbols.jl")
@@ -206,10 +269,12 @@ function completions(string, pos)
206269
# Make sure that only latex_completions is working on strings
207270
inc_tag==:string && return UTF8String[], 0:-1, false
208271

209-
if inc_tag == :other && string[pos] == '('
210-
endpos = prevind(string, pos)
211-
startpos = nextind(string, rsearch(string, non_identifier_chars, endpos))
212-
return complete_methods(string[startpos:endpos]), startpos:endpos, false
272+
if inc_tag == :other && should_method_complete(partial)
273+
frange, method_name_end = find_start_brace(partial)
274+
ex = parse(partial[frange] * ")", raise=false)
275+
if isa(ex, Expr) && ex.head==:call
276+
return complete_methods(ex), start(frange):method_name_end, false
277+
end
213278
elseif inc_tag == :comment
214279
return UTF8String[], 0:-1, false
215280
end
@@ -228,7 +293,7 @@ function completions(string, pos)
228293
# also search for packages
229294
s = string[startpos:pos]
230295
if dotpos <= startpos
231-
for dir in [Pkg.dir(), LOAD_PATH, pwd()]
296+
for dir in [Pkg.dir(); LOAD_PATH; pwd()]
232297
isdir(dir) || continue
233298
for pname in readdir(dir)
234299
if pname[1] != '.' && pname != "METADATA" &&

0 commit comments

Comments
 (0)