Before this commit, things like this:
(define c% (class object% (super-new)))
(object-name c%)
would produce
'class:c%
but now classes and interfaces will be more like procedures and, in
the example above, just produce:
'c%
The underlying goal is to make error messages generated from contracts
like
(is-a?/c frame%)
have "(is-a?/c frame%)" in the message, instead of "(is-a?/c
class:frame%)"
This reverts commit c2468f1f9a.
The libjpeg documentation claims that it has no static state,
so atomic mode shouldn't be necessary. Also, the stress test is
still failing on some platforms, so there must be a different
problem than I thought.
Revert "do a little bit better job compressing the bytes"
This reverts commit 099a35881e.
Revert "adjust file to use the literal bytes for the ufo image"
This reverts commit fdd9344b27.
* Consolidated Gauss and Gauss-Jordan elimination
* Fixed Gaussian elimination to return all indexes for pivotless columns,
not just those < m
* Consolidated `matrix-row-echelon' and `matrix-reduced-row-echelon'
* Specialized row reduction for determinants; removed option to not do
partial pivoting (it's never necessary otherwise)
* Added `matrix-invertible?'
* Removed `matrix-solve-many'; now `matrix-solve' solves for multiple
columns
* Gave `matrix-inverse' and `matrix-solve' optional failure thunk arguments
* Made some functions that return multiple columns return arrays instead
(i.e. `matrix-column-space')
* Added more tests
The version number is included as the query part of the constructed
URL, so it is easily ignored by a server. The intent is that the
PLT PNRs will eventually support version-specific results.
* Split "matrix-constructors.rkt" into three parts:
* "matrix-constructors.rkt"
* "matrix-conversion.rkt"
* "matrix-syntax.rkt"
* Made `matrix-map' automatically inline (it's dirt simple)
* Renamed a few things, changed some type signatures
* Fixed error in `matrix-dot' caught by testing (it was broadcasting)
* Rewrote matrix comprehensions in terms of array comprehensions
* Removed `in-column' and `in-row' (can use `in-array', `matrix-col' and
`matrix-row')
* Tons of new rackunit tests: only "matrix-2d.rkt" and
"matrix-operations.rkt" are left (though the latter is large)
* Finally added `array-axis-expand' as a dual for `array-axis-reduce'
in order to implement `vandermonde-matrix' elegantly
* Better, shorter matrix multiply; reworked all matrix arithmetic
* Split "matrix-operations.rkt" into at least 5 parts:
* "matrix-operations.rkt"
* "matrix-basic.rkt"
* "matrix-comprehension.rkt"
* "matrix-sequences.rkt"
* "matrix-column.rkt"
Added "matrix-constructors.rkt"
Added `matrix', `row-matrix', and `col-matrix' macros
A lot of other little changes
Currently, `in-row' and `in-column' are broken. I intend to implement
them in a way that makes them work in untyped and Typed Racket.
JPEG reading and writing involve callbacks that need to be
atomic, since the stack-swapping games that a Racket thread
switch plays may not be ok with the JPEG library (as exposed
by the stress test). So, the JPEG reading and writing code
must read/write a string port, instead of directly from/to
the source/destination port, since a string port can be
used in atomic mode.
More precisely, do this for nested flows with the "refcontent" style.
For instance this Scribble:
@margin-note{Note: This is a note. Let's make it long enough that the
markdown output will have to line-wrap, to make sure the > mark starts
each line properly.}
Will render as this Markdown:
> Note: This is a note. Let's make it long enough that the markdown output
> will have to line-wrap, to make sure the > mark starts each line
> properly.
A site like GitHub.com will render this in a block-quote style
suitable for notes:
> Note: This is a note. Let's make it long enough that the markdown output
> will have to line-wrap, to make sure the > mark starts each line
> properly.
A phantom byte string is a small object that the memory
manager treats as an arbitrary-sized object, where the
size is specified when the phantom byte string is created
or or when size is changed via `set-phantom-bytes!'.
Things should now generally be set up to work better --
for example online check syntax is smarter now about
what happens when switching tabs/frames and this also
makes it easier to add new ways for a window to become
dirty (that is, for it to be known that it needs to
be recompiled)
Keep track of whether any Racket-managed subprocesses are pending,
and use waitpid(0, ...) only if there is one, to better cooperate
with an embedding environment.
Also, add a chapter to the "Inside" manual to explain the issues.
* `list->array' now accepts an optional shape argument, and always returns
an immutable array
* `vector->array' now accepts an optional shape argument, and always
returns a mutable array
* Removed `make-mutable-array' because `vector->array' does its job now (I
never liked the name anyway)
* Renamed `unsafe-mutable-array' to `unsafe-vector->array'
* Added optional type annotation to `array' macro to match `mutable-array'
* Reworded error messages in array broadcasting functions
* Made minor array doc fixes
Also allow `#:break' and `#:final' in all the `for:' macros.
Unfortunately, the expansion of `#:break' and `#:final' cannot be
typechecked at the moment.
renamed `partition-count' to `partitions' to be consistent with
`permutations', and gave better examples in `multinomial' docs
* (flulp-error +inf.0 +nan.0) was returning +nan.0 instead of +inf.0
* Type of `multinomial' didn't match its docs or `flmultinomial'
* Reworded docs for `diagonal-array'
* Reworked/reordered quite a few things in docs for `math/bigfloat'
* Fixed first identity given in `gamma-inc' docs
* Fixed descrption for `+max.0', etc.
Changing `current-url-encode-mode' from 'recommended to 'unreserved
causes `url->string' to encode !, *, ', (, and ) using %, which
can avoid confusing some parsers.
See also https://github.com/plt/racket/pull/198
Presumably, values shouldn't ever wrap and the bytestring is already
assured to be long enough, so using safe operations isn't strictly
necessary. This dangerous improvement yields speedup factor of ~1.86.
In set-argb-pixels, the critical loop for each pixel tests the value
of a boolean that was defined at the top level of the class. Forcing
these to be local variables gives a speedup of 1.5.
As long as some thread is ready to run, and in case the threads
synchronize after very little work, keep checking threads for
at least one thread quantum.
I also made some minor changes to `plot' so that its functions would
type more easily. In particular, everything that used to take a list
of vectors now accepts a (Sequenceof (Sequenceof Real)). The 3D
discrete histogram renderers now also accept lists as well as vectors
in the sequence of categories.
For now, in typed/plot functions, optional non-keyword arguments are
required. As soon as Vincent closes PR 13354, I should be able to
uncomment part of a macro in "typed/plot/syntax.rkt" to make them
correctly optional.
When a tag is serializable but not `write'--`read' invariant,
then it needs to be serialized and deserialized.
Also, clarify and check in `tag?' that a tag should be
serializable.
The revised protocol for a progress procedure doesn't create
the thread automatically, and it provides an event to indicate
when the progress count changes.
Render Scribble like
@hyperlink["url" "content"]
as Markdown like
[content](url)
Note that this only works for `@hyperlink`. The motivation is to
preserve content the author has explicitly written. (Previously,
`markdown-render.rkt` was discarding this; `text-render.rkt` still
does so.)
This does _not_ attempt to handle everything that `html-render.rkt`
would automatically generate and render as `<a>`. It simply can't --
things like hotlinked Racket keywords in code blocks simply won't work
in Markdown.
* Fixed and added tests for `quantile' and `median', documented them
* Added `sort-samples', documented it
* Removed `real-quantile' and `real-median' (too many design choices
right now; will revisit when implementing Kernel Density Estimators)
* Documented `absdev' and `absdev/median'
* Fixed `update-statistics*': now uses O(1) space as advertised (if the
sequences of values and weights both use O(1) space)
* Changed types of binning functions: allows using #:key in the future
(when TR supports function type cases that differ only by keyword
argument types better), places optional weights at the end like other
statistics functions
* Clarified binning docs about sort stability and half-open intervals
URL map were handled.
Previously, only ".." at the beginning of the URL were checked; now it
looks at the entire URL for a path that ultimately leaves the base.
Uses "Github flavored markdown". Specifically, code blocks are opened
using ```scheme so that Github will lex and format them as Scheme code
rather than generic monospace.
Note: I would have used ```racket, but we are still waiting for the
pygments.rb project to pull again from pygments-main -- to which I
contributed a Racket lexer back in August. After pygments.rb pulls,
can update this to use ```racket instead.
This should have been like this all along; I think it can lead to
race-conditions with high-priority events. In particular, something
might be pending in the event queue and then the test suite might
queue a high-priority event to check for it, which could happen before
the event that actually does the work that's being checked for!
When libmpfr wasn't available, the function created by `make-not-available'
would try to print any _mpfr arguments, which would call the custom _mpfr
printer, which would try to use a libmpfr function, which would call the
function created by `make-not-available', which would try to print...
The px unit is a pdflatex specific adjustable unit that is 1 bp (big
point = 1/72in) by default. This commit changes the latex renderer to
use bp which is a standard TeX unit equivalent to the default px
value. This change allows .tex files generated by scribble to work
with other latex engines such as xelatex.
http://nwalsh.com/tex/texhelp/Plain.html#dimensionshttp://tex.stackexchange.com/questions/41370/what-are-the-possible-dimensions-sizes-units-latex-understands
Here is a small test of using scribble and xelatex:
$ cat try.scrbl
@(require scriblib/figure redex/reduction-semantics redex/pict)
@(define-language L)
@(render-term L (term 1))
$ scribble --latex try.scrbl ; xelatex try
Cleaned up expected value code a little
Refactored running statistics objects (hid private fields, added
`update-statistics*')
Documented expected value functions and running statistics
Removed `bfpsi0' from bigfloat tests (DrDr's libmpfr doesn't have it)
Commented out custodian shutdown callback that frees MPFR's cache
(something's broken)
of libmpfr (like DrDr's) that don't have it
Reimplemented really simple FFI functions (e.g. mpfr-prec, mpfr-exp) to
avoid calling overhead
Renamed `bigfloat-sign' to `bigfloat-signbit'
Renamed `bigfloat-sig+exp' to `bigfloat->sig+exp' (for symmetry with
`sig+exp->bigfloat')
use longs for the "limbs" of bigints. However, when GMP's configure script
detects that mingw64 is compiling, it defines LONG_LONG_LIMB, which makes the
type of limbs long long, or 64 bits. This is fine; a 64-bit machine should use
64-bit ints for the digits of its bigints. It would have been nice to know
this special case earlier, though I can see why it's not advertised: most
users don't need to know, and it seems like it's obviously the right choice to
make when dealing with Win64's annoying ABI.
Made "mpfr.rkt" search for 'mpfr_set_z_exp if 'mpfr_set_z_2exp isn't found.
Hopefully this allows the bigfloat tests to finish on DrDr. If not, DrDr
will need a libmpfr upgrade.
Made some minor doc fixups
Exact 0 turns out to also be a corner case for addition.
At this point, mixed-mode optimizations pretty much only apply for mixes
of floats and literal non-zero non-floats.
Fixed bigfloat functions that assumed (fixnum? x) means x fits in a _long
(not true on Win64)
Hopefully fixed dangling pointer errors that broke `math/bigfloat' on Win64.
It apparently had no _long/_int mismatches, but GC on Win64 will run between
creating an `_mpz' and using its value after passing it as an output argument
to MPFR functions. That doesn't seem to happen on 64-bit Linux or Mac. No
idea why, but Win64 exposed the problem so... that's good, I guess.
Rewrote `rational->bigfloat' to not use GMP's rationals
More/better bigfloat tests
Added bigfloat stress test w/ weak leak detection
Reenabled custodian shutdown callback that clears MPFR constants, because it
seems to work now
Removed `mpfr-available?' because it would only return non-#f
Note: this isn't the ideal location for this in the long
run because it isn't a special form. When we have more
bindings like this, we should move them to a new manual
section.
Allowing them would require support for immutable fxvectors and
flvectors, interning, and more. Since the motivation for reader
support is to make marshaling and unmarshaling easier, allow
them only in `read' mode. Change printing to make then unquotable.