SciPy 1.8.0 is the culmination of 6 months of hard work. It contains
many new features, numerous bug-fixes, improved test coverage and better
documentation. There have been a number of deprecations and API changes
in this release, which are documented below. All users are encouraged to
upgrade to this release, as there are a large number of bug-fixes and
optimizations. Before upgrading, we recommend that users check that
their own code does not use deprecated SciPy functionality (to do so,
run your code with ``python -Wd`` and check for ``DeprecationWarning`` s).
Our development attention will now shift to bug-fix releases on the
1.8.x branch, and on adding new features on the master branch.
This release requires Python 3.8+ and NumPy 1.17.3 or greater.
For running on PyPy, PyPy3 6.0+ is required.
**************************
Highlights of this release
**************************
- A sparse array API has been added for early testing and feedback; this
work is ongoing, and users should expect minor API refinements over
the next few releases.
- The sparse SVD library PROPACK is now vendored with SciPy, and an interface
is exposed via `scipy.sparse.svds` with ``solver='PROPACK'``. It is currently
default-off due to potential issues on Windows that we aim to
resolve in the next release, but can be optionally enabled at runtime for
friendly testing with an environment variable setting of ``USE_PROPACK=1``.
- A new `scipy.stats.sampling` submodule that leverages the ``UNU.RAN`` C
library to sample from arbitrary univariate non-uniform continuous and
discrete distributions
- All namespaces that were private but happened to miss underscores in
their names have been deprecated.
The NumPy 1.22.3 is maintenance release that fixes bugs discovered after the
1.22.2 release. The most noticeable fixes may be those for DLPack. One that may
cause some problems is disallowing strings as inputs to logical ufuncs. It is
still undecided how strings should be treated in those functions and it was
thought best to simply disallow them until a decision was reached. That should
not cause problems with older code.
The NumPy 1.22.2 is maintenance release that fixes bugs discovered after the
1.22.1 release. Notable fixes are:
- Several build related fixes for downstream projects and other platforms.
- Various Annotation fixes/additions.
- Numpy wheels for Windows will use the 1.41 tool chain, fixing downstream link
problems for projects using NumPy provided libraries on Windows.
- Deal with CVE-2021-41495 complaint.
The NumPy 1.22.1 is maintenance release that fixes bugs discovered after the
1.22.0 release. Notable fixes are:
- Fix f2PY docstring problems (SciPy)
- Fix reduction type problems (AstroPy)
- Fix various typing bugs.
NumPy 1.22.0 is a big release featuring the work of 153 contributers spread
over 609 pull requests. There have been many improvements, highlights are:
* Annotations of the main namespace are essentially complete. Upstream is a
moving target, so there will likely be further improvements, but the major
work is done. This is probably the most user visible enhancement in this
release.
* A preliminary version of the proposed Array-API is provided. This is a step
in creating a standard collection of functions that can be used across
applications such as CuPy and JAX.
* NumPy now has a DLPack backend. DLPack provides a common interchange format
for array (tensor) data.
* New methods for ``quantile``, ``percentile``, and related functions. The new
methods provide a complete set of the methods commonly found in the
literature.
* A new configurable allocator for use by downstream projects.
* The universal functions have been refactored to implement most of
:ref:`NEP 43 <NEP43>`. This also unlocks the ability to experiment with the
future DType API.
The R package installs the file lib/R/etc/Makeconf, which is intended
to be used by R packages that themselves compile programs. This
feature is rarely used, but the math/R-nimble package is an example of
one that does. For this to work, the compiler flags embedded within
Makeconf must be compatible with the system compiler. At least on
MacOS, this is not the case by default, and so nimble compilations
fail. This substitutes ${COMPILER_RPATH_FLAG} into configure.ac, so
that it is used when creating Makeconf. Since neither R itself nor
most R packages compile other programs, Makeconf is generally not used
and this fix will have no impact.
lapack creates .mod files that are created in the same location
when the static and shared libraries these then interfere with each
other. put the .mod files created when buildling the static library
in a different directory to fix this.
Now correctly detects external devel/cpu_features package, so remove
patches for that. Also remove boost dependency since the package was
changed to use C++17 instead of boost.
Upstream changes:
CHANGES IN R 4.1.3:
NEW FEATURES:
* The default version of Bioconductor has been changed to 3.14.
(This is used by setRepositories and the menus in GUIs.)
UTILITIES:
* R CMD check --as-cran has a workaround for a bug in versions of
file up to at least 5.41 which mis-identify DBF files last
changed in 2022 as executables.
C-LEVEL FACILITIES:
* The legacy S-compatibility macros SINGLE_* in R_ext/Constants.h
(included by R.h) are deprecated and will be removed in R 4.2.0.
BUG FIXES:
* Initialization of self-starting nls() models with initialization
functions following the pre-R-4.1.0 API (without the ...
argument) works again for now, with a deprecation warning.
* Fixed quoting of ~autodetect~ in Java setting defaults to avoid
inadvertent user lookup due to leading ~, reported in PR#18231 by
Harold Gutch.
* substr(., start, stop) <- v now treats _negative_ stop values
correctly. Reported with a patch in PR#18228 by Brodie Gaslam.
* Subscripting an array x without dimnames by a
length(dim(x))-column character matrix gave "random" non-sense,
now an error; reported in PR#18244 by Mikael Jagan.
* ...names() now matches names(list(...)) closely, fixing PR#18247.
* all.equal(*, scale = s) now works as intended when length(s) > 1,
partly thanks to Michael Chirico's PR#18272.
* print(x) for long vectors x now also works for named atomic
vectors or lists and prints the correct number when reaching the
getOption("max.print") limit; partly thanks to a report and
proposal by Hugh Parsonage to the R-devel list.
* all.equal(<selfStart>, *) no longer signals a deprecation
warning.
* reformulate(*, response=r) gives a helpful error message now when
length(r) > 1, thanks to Bill Dunlap's PR#18281.
* Modifying globalCallingHandlers inside withCallingHandlers() now
works or fails correctly, thanks to Henrik Bengtsson's PR#18257.
* hist(<Date>, breaks = "days") and hist(<POSIXt>, breaks = "secs")
no longer fail for inputs of length 1.
* qbeta(.001, .9, .009) and similar cases now converge correctly
thanks to Ben Bolker's report in PR#17746.
* window(x, start, end) no longer wrongly signals "'start' cannot
be after 'end'", fixing PR#17527 and PR#18291.
* data() now checks that its (rarely used) list argument is a
character vector - a couple of packages passed other types and
gave incorrect results.
* which() now checks its arr.ind argument is TRUE rather coercing
to logical and taking the first element - which gave incorrect
results in package code.
* model.weights() and model.offset() more carefully extract their
model components, thanks to Ben Bolker and Tim Taylor's R-devel
post.
* list.files(recursive = TRUE) now shows all broken symlinks
(previously, some of them may have been omitted, PR#18296).
This package contains basic definitions related to indexed
profunctors. These are primarily intended as internal utilities to support
the optics and generic-lens package families.
Haskellers are usually familiar with monoids and semigroups. A monoid has
an appending operation <> (or mappend), and an identity element, mempty. A
semigroup has an appending <> operation, but does not require a mempty
element.
A Semiring has two appending operations, plus and times, and two respective
identity elements, zero and one.
More formally, a Semiring R is a set equipped with two binary relations +
and *, such that:
- (R,+) is a commutative monoid with identity element 0,
- (R,*) is a monoid with identity element 1,
- (*) left and right distributes over addition, and multiplication by '0'
annihilates R.
This package provides tools for working with various Kan extensions and Kan
lifts in Haskell.
Among the interesting bits included are:
* Right and left Kan extensions (Ran and Lan)
* Right and left Kan lifts (Rift and Lift)
* Multiple forms of the Yoneda lemma (Yoneda)
* The Codensity monad, which can be used to improve the asymptotic
complexity of code over free monads (Codensity, Density)
* A "comonad to monad-transformer transformer" that is a special case of a
right Kan lift. (CoT, Co)
Free monads are useful for many tree-like structures and domain specific
languages.
If f is a Functor then the free Monad on f is the type of trees whose nodes
are labeled with the constructors of f. The word "free" is used in the
sense of "unrestricted" rather than "zero-cost": Free f makes no
constraining assumptions beyond those given by f and the definition of
Monad. As used here it is a standard term from the mathematical theory of
adjoint functors.
Cofree comonads are dual to free monads. They provide convenient ways to
talk about branching streams and rose-trees, and can be used to annotate
syntax trees. The cofree comonad can be seen as a stream parameterized by a
Functor that controls its branching factor.