The fix consists of three parts:
1. Rewriting `inline-matrix*'. The material change here is that the
expansion now contains only direct applications of `+' and `*'.
TR's optimizer replaces them with `unsafe-fx+' and `unsafe-fx*',
which keeps intermediate flonum values from being boxed.
2. Making the types of all functions that operate on (Matrix Number)
values more precise. Now TR can prove that matrix operations preserve
inexactness. For example, matrix-conjugate : (Matrix Flonum) ->
(Matrix Flonum) and three other cases for Real, Float-Complex, and
Number.
3. Changing the return types of some functions that used to return
things like (Matrix (U A 0)). Now that we worry about preserving
inexactness, we can't have `matrix-upper-triangle' always return a
matrix that contains exact zeros. It now accepts an optional `zero'
argument of type A.
(cherry picked from commit f42cc6f14a)
* Narrowed type of `submatrix' to only sensible argument types
* `matrix-invertible?' now returns #f when given a non-square matrix
instead of raising an error
* Allowed `matrix-diagonal' to operate on non-square matrices
(cherry picked from commit 24561e25e4)
* Fixed type of `matrix-expt'
* Made matrix functions respect `array-strictness' parameter (mostly
wrapping functions with `parameterize' and return values with
`array-default-strictness'; reindentation makes changes look larger)
* Added strictness tests
(cherry picked from commit f40ad2ca9d)
* Added parameter `array-strictness', default #t
* Added `array-default-strict!' and `array-default-strict', which act
like the functions without "default" in the name when
`array-strictness' is #t; otherwise they do nothing
* Lots of small changes to existing array functions, mostly to ensure
computations are done using nonstrict arrays, but return values are
strict when `array-strictness' is #t
* Added strictness tests
* Added tests to ensure untyped code can use `math/array'
* Rewrote `array-map' exported to untyped code using untyped Racket
* Rearranged a lot of `math/array' documentation
(cherry picked from commit 986e695bd5)
closes PR 13435
Also cleaned up one more threading problem (this one was
probably innocuous, but it is hard to be sure and the
rewrite is easier to see that it isn't problematic)
(cherry picked from commit 131af9955d)
* Remove lots of sudoing, and instead use one to change the contents (of
non-simple DMGs). Perhaps that's not needed too. (I think that there
used to be some problem when the owner was a specific user in the
installer script days, perhaps it caused some mess in the pre/post
flight scripts. Maybe it's safe to not do this anymore.)
* There was a fundamental weakness in the Finder script -- it tweaks the
DMG by openning its mount, but the way to specify a disk is via its
displayed name which is not unique. This can be problematic if there
is already a mount that has the same name, and given that the DMG
machine can be used by PLT people, it's even likely to happen. It is
tricky to solve this, since there is no way that I see to refer to the
disk by its mount point or device in the Finder, and no way to find
out the name in the shell.
I spent a ton of time searching the webs for a solution, but it seems
that practically nobody is concerned (or even aware of this problem).
Eventually, the hack I did is to mount the image onto a randomly named
directory, then iterate over all disks and look for one whose `name'
property is that directory name (apparently the `name' property is the
name of the last component of the mount point). For safety, throw an
error if no such disk is found, or if more than one is found.
Incidentally, using a known mount point also simplifies things since
there is no need to know the device name of the mount.
* Use UDBZ instead of UDZO for the compressed image. The savings are
not as big as I expected them to be for some reason, but the
compatibility issues should be all gone now (UDBZ works only from 10.4
and up).
* Unset $LD_LIBRARY_PATH to avoid some 10.8 bug.
* Switch the build to happen on dublin, running 10.8. At least
code-signing is broken on the 10.5.8 machine, and possibly also the
osascript to identify the desired image disk.
(cherry picked from commit 368ee6d8b5)
"dmg" is now the layout-enabled usual DMGs, since they will soon have
more functionality around them (signed applications). "sdmg" is for the
simple (or "source") DMGs, which are just plain containers for a
directory. Also use a flag to avoid the stupid dynamic scope hack.
(cherry picked from commit c8615a37b1)
Various things can go wrong with `raco pkg show', including
permission errors or lock conflicts.
Merge to v5.3.2
(cherry picked from commit d2ce3f714b)
In particular, `raco pkg show' should work when the user does not
have write access to the installation directory or installation-wide
package database.
Merge to v5.3.2
(cherry picked from commit b5d874e35d)
Note that this requires a running Finder. Note also that the process
involves attaching the created DMG which means that it might be
problematic with a machine that might have a volume by the same name
already attached (since the applescript uses the volume name, which is
not required to be unique).
(cherry picked from commit b5618b7d13)
Robby says that they're no longer recommended and rarely used by
browsers, and with a better dmg layout the contents should not be copied
automatically anyway.
(cherry picked from commit a3a47128de)
The problem was in the handing of "lightweight continuations" used to
represent suspended computations, and in particular the handling
of continuation marks (such as the ones added by DrRacket's debugging
mode).
Unfortunately, I wasn't able to construct a simpler test case that
triggers the problem. I think the number of installed continuation marks
has to be just right, and there have to be some replacing marks, and
a lightweight continuaiton has to be captured at the right time
as a result of applying a previously captured continuation.
Closes PR 13427
Merge to v5.3.2
(cherry picked from commit f93c620814)
It fixes a crash in the installation on OpenBSD. Racket reaches the
limits of the shell when it is compiled with a non-root user account.
Tested on OpenBSD-current amd64.
Merge to v5.3.2
(cherry picked from commit 99c60d725c)
Had been specifying Scheme lexer for code blocks, while waiting for
new Racket lexer to wend its way from Pygments to Pygments.rb to
Linguist to GitHub.
That day is almost here: Linguist will soon update and deploy to
GitHub. And Racket 5.3.2 is about to release. As a result, I think
this is the correct time to switch to the Racket lexer: It should be
live on GitHub by the time people are using Racket 5.3.2.
/cc @rmculpepper -- I think this commit should go into the 5.3.2
release.
(cherry picked from commit 4d3a5bad04)
For some reason, the other predicate breaks on some
test setups, even though it usually succeeds.
Please merge to 5.3.2
(cherry picked from commit c5c6280d87)
- parsing of polydots values was fixed
- certain polydots error cases are now reported
- the custom application rule for values was fixed
Closes PR 13365
Please merge to 5.3.2
(cherry picked from commit f577b49a4d)