What's new in this version: New language features: - It is now possible to assign to bindings in another module using setproperty!(::Module, ::Symbol, x) - Slurping in assignments is now also allowed in non-final position. This is handled via Base.split_rest - Character literals now support the same syntax allowed in string literals; i.e. the syntax can represent invalid UTF-8 sequences as allowed by the Char type - Support for Unicode 15 - Nested combinations of tuples and named tuples of symbols are now allowed as type parameters - New builtins getglobal(::Module, ::Symbol[, order]) and setglobal!(::Module, ::Symbol, x[, order]) for reading from and writing to globals. getglobal should now be preferred for accessing globals over getfield
Language changes: - The @invoke macro introduced in 1.7 is now exported. Additionally, it now uses Core.Typeof(x) rather than Any when a type annotation is omitted for an argument x so that types passed as arguments are handled correctly - The invokelatest function and @invokelatest macro introduced in 1.7 are now exported
Compiler/Runtime improvements: - Time to first execution (TTFX, sometimes called time to first plot) is greatly reduced. Package precompilation now saves native code into a "pkgimage", meaning that code generated during the precompilation process will not require compilation after package load. Use of pkgimages can be disabled via --pkgimages=no ([#44527]) ([#47184]). - The known quadratic behavior of type inference is now fixed and inference uses less memory in general. Certain edge cases with auto-generated long functions (e.g. ModelingToolkit.jl with partial differential equations and large causal models) should see significant compile-time improvements - Non-concrete call sites can now be union-split to be inlined or statically resolved even if there are multiple dispatch candidates. This may improve runtime performance in certain situations where object types are not fully known statically, by statically resolving @nospecialize-d call sites and avoiding excessive compilation - All uses of the @pure macro in Base have been replaced with the now-preferred Base.@assume_effects - invoke(f, invokesig, args...) calls to a less-specific method than would normally be chosen for f(args...) are no longer spuriously invalidated when loading package precompile files
Command-line option changes: - In Linux and Windows, --threads=auto now tries to infer the usable number of CPUs from the process affinity which is set typically in HPC and cloud environments - --math-mode=fast is now a no-op - The --threads command-line option now accepts auto|N[,auto|M] where M specifies the number of interactive threads to create (auto currently means 1) - New option --heap-size-hint=<size> suggests a size limit to invoke garbage collection more eagerly. The size may be specified in bytes, kilobytes (1000k), megabytes (300M), or gigabytes (1.5G)
Multi-threading changes: - Threads.@spawn now accepts an optional first argument: :default or :interactive. An interactive task desires low latency and implicitly agrees to be short duration or to yield frequently. Interactive tasks will run on interactive threads, if any are specified when Julia is started - Threads started outside the Julia runtime (e.g. from C or Java) can now become able to call into Julia code by calling jl_adopt_thread. This is done automatically when entering Julia code via cfunction or a @ccallable entry point. As a consequence, the number of threads can now change during execution
Build system changes: New library functions: - New function Iterators.flatmap
New pkgversion(m::Module) function to get the version of the package that loaded a given module, similar to pkgdir(m::Module)
New function stack(x) which generalises reduce(hcat, x::Vector{<:Vector}) to any dimensionality, and allows any iterator of iterators. Method stack(f, x) generalises mapreduce(f, hcat, x) and is more efficient - New macro @allocations which is similar to @allocated except reporting the total number of allocations rather than the total size of memory allocated
New library features: - RoundFromZero now works for non-BigFloat types - Dict can be now shrunk manually by sizehint! - @time now separates out % time spent recompiling invalidated methods
Standard library changes: A known concurrency issue in iterate methods on Dict and other derived objects such as keys(::Dict), values(::Dict), and Set is fixed. These methods of iterate can now be called on a dictionary or set shared by arbitrary tasks provided that there are no tasks mutating the dictionary or set - Predicate function negation !f now returns a composed function (!) ∘ f instead of an anonymous function - eachslice now works over multiple dimensions; eachslice, eachrow and eachcol return a Slices object, which allows dispatching to provide more efficient methods - @kwdef is now exported and added to the public API - An issue with order of operations in fld1 is now fixed - Sorting is now always stable by default, as QuickSort was stabilized - Base.splat is now exported. The return value is now a Base.Splat instead of an anonymous function, which allows for pretty printing
Package Manager: LinearAlgebra: - The methods a / b and b a with a a scalar and b a vector, which were equivalent to a * pinv(b), have been removed due to the risk of confusion with elementwise division - We are now wholly reliant on libblastrampoline (LBT) for calling BLAS and LAPACK. OpenBLAS is shipped by default, but building the system image with other BLAS/LAPACK libraries is not supported. Instead, it is recommended that the LBT mechanism be used for swapping BLAS/LAPACK with vendor provided ones - lu supports a new pivoting strategy RowNonZero() that chooses the first non-zero pivot element, for use with new arithmetic types and for pedagogy - normalize(x, p=2) now supports any normed vector space x, including scalars - The default number of BLAS threads is now set to the number of CPU threads on ARM CPUs, and half the number of CPU threads on other architectures
Printf: - Error messages for bad format strings have been improved, to make it clearer what and where in the format string is wrong
Profile: - New function Profile.take_heap_snapshot(file) that writes a file in Chrome's JSON-based .heapsnapshot format
Random: - randn and randexp now work for any AbstractFloat type defining rand
REPL: - Alt-e now opens the current input in an editor. The content (if modified) will be executed upon exiting the editor
The contextual module which is active in the REPL can be changed (it is Main by default), via the REPL.activate(::Module) function or via typing the module in the REPL and pressing the keybinding Alt-m - A "numbered prompt" mode which prints numbers for each input and output and stores evaluated results in Out can be activated with REPL.numbered_prompt!(). See the manual for how to enable this at startup - Tab completion displays available keyword arguments ([#43536])
SuiteSparse: - Code for the SuiteSparse solver wrappers has been moved to SparseArrays.jl. Solvers are now re-exported by SuiteSparse.jl.
SparseArrays: - SuiteSparse solvers are now available as submodules of SparseArrays (JuliaSparse/SparseArrays.jl#95). - UMFPACK (JuliaSparse/SparseArrays.jl#179) and CHOLMOD (JuliaSparse/SparseArrays.jl#206) thread safety are improved by avoiding globals and using locks. Multithreaded ldiv! of UMFPACK objects may now be performed safely.
An experimental function SparseArrays.allowscalar(::Bool) allows scalar indexing of sparse arrays to be disabled or enabled. This function is intended to help find accidental scalar indexing of SparseMatrixCSC objects, which is a common source of performance issues (JuliaSparse/SparseArrays.jl#200).
Test: - New fail-fast mode for testsets that will terminate the test run early if a failure or error occurs. Set either via the @testset kwarg failfast=true or by setting env var JULIA_TEST_FAILFAST to "true" i.e. in CI runs to request the job failure be posted eagerly when issues occur
Dates: - Empty strings are no longer incorrectly parsed as valid DateTimes, Dates or Times and instead throw an ArgumentError in constructors and parse, while nothing is returned by tryparse ([#47117]).
Distributed: The package environment (active project, LOAD_PATH, DEPOT_PATH) is now propagated when adding local workers (e.g. with addprocs(N::Int) or through the --procs=N command line flag) - addprocs for local workers now accepts the env keyword argument for passing environment variables to worker processes. This was already supported for remote workers
Unicode: - graphemes(s, m:n) returns a substring of the m-th to n-th graphemes in s
DelimitedFiles: - DelimitedFiles has been moved out as a separate package.
Deprecated or removed: External dependencies: - On Linux, now autodetects the system libstdc++ version, and automatically loads the system library if it is newer. The old behavior of loading the bundled libstdc++ regardless of the system version can be restored by setting the environment variable JULIA_PROBE_LIBSTDCXX=0 - Removed RPATH from the julia binary. On Linux this may break libraries that have failed to set RUNPATH.
Tooling Improvements: - Printing of MethodError and methods (such as from methods(my_func)) is now prettified and colored consistently with printing of methods in stacktraces
Julia Language 1.9.0 (64-bit) 相關參考資料
Chocolatey Software | Julia programming language 1.10.0
Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical ...
https://community.chocolatey.o
Download Julia
The official website for the Julia Language. Julia is a language that is fast, dynamic, easy to use, and open source. Click here to learn more.
https://julialang.org
Downloading Julia Language 1.9.0 (64-bit) ...
The file will be downloaded from author's server · This file is safe and scanned with 64 antivirus apps (Virus-Total report) · All files are in original form.
https://www.filehorse.com
Julia (programming language)
Julia is a high-level, general-purpose dynamic programming language, most commonly used for numerical analysis and computational science.
https://en.wikipedia.org
Julia Computing整理的Julia使用手冊,同Julia官方線上版
2017年2月3日 — Julia (Language) Music Episode 4: The Julia Language is Music to Our Ears - DEV Community https://dev.to/talkjulia/episode-4-the-julia-language-
https://www.facebook.com
Julia Language 1.10.1 (64-bit) Download for Windows Old ...
2024年2月15日 — Julia Language 1.9.0 (64-bit). Date released: 10 May 2023 (10 months ago). Download · Julia Language 1.9.0 (32-bit). Date released: 10 May 2023 ...
https://www.filehorse.com
Julia version 1.9.0 on VSCODE , for loops and other weird ...
2023年5月12日 — trying to do simple for loop on julia 1.9.0 (in vscode), for i in 1:10 println(i) end. julia seems to start evaluating endlessly up
https://discourse.julialang.or
julia-1.9.0.pdf - GitHub
2023年5月9日 — The Julia programming language fills this role: it is a flexible dynamic language ... 64. -2^63. 2^63 - 1. UInt64. 64. 0. 2^64 - 1. Int128. ✓.
https://raw.githubusercontent.
Segmentation Fault on using "julia setup" for JuliaCall in R
2023年5月17日 — ... (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. ... 1.9.0/julia-1.9.0/bin will be used. Loading setup script for JuliaCall ...
https://github.com
What to do when you are stuck with Julia?
2024年1月12日 — jl 1.9.0. The problem. In my work I needed to generate random geometric graphs. This is a simple random graph model that works as follows ( ...
https://medium.com
|