Vala 0.40.8
===========
* Various improvements and bug fixes:
- Fix links in the Manual
- libvaladoc: Change link to Valadoc wiki page for HTML doclet
- valadoc: Use HTML5 doctype in HTML doclet
- codegen: Let methods return -1 on error by default if possible [#526]
- Allow TypeModule subclasses as parameter-type in module-init-method [#648]
- girparser: Allow changing the type of constants using metadata [#643]
- girwriter: Add boolean GIR visible attribute to allow skipping symbols
- vala: Report error for error-domains without any code
- parser: Accept "empty" enums/error-domains [#253]
- codewriter: Output bodies of code-blocks if in VAPIGEN mode [#253]
* Bindings:
- gobject-2.0: Add lower_case_csuffix attributes to Type* symbols
- gdk-3.0,gtk+-3.0: Update to 3.23.0+df045423
- gio-2.0: Add custom IOError.from_errno() to make it work as expected [#253]
- gtk+-4.0: Update to 3.94.0+bf5f27c6
- gstreamer-rtsp-server-1.0: Update from 1.14+ git master [#653]
- buffer:
- Fix out-of-bounds (OOB) write in `Buffer.write()` for UCS-2
encoding (CVE-2018-12115)
- Fix unintentional exposure of uninitialized memory in
`Buffer.alloc()` (CVE-2018-7166)
- deps:
- Upgrade to OpenSSL 1.1.0i, fixing:
- Client DoS due to large DH parameter (CVE-2018-0732)
- ECDSA key extraction via local side-channel (CVE not assigned)
- Upgrade V8 from 6.7 to 6.8
- Memory reduction and performance improvements
- http: `http.get()` and `http.request()` (and `https` variants) can
now accept three arguments to allow for a `URL` _and_ an `options`
object
Changes in 2.2.4 (since 2.2.3):
* New interfaces and functionality
** SRFI-71 (Extended LET-syntax for multiple values)
Guile now includes SRFI-71, which extends let, let*, and letrec to
support assigning multiple values. See "SRFI-71" in the manual for
details.
** (web client) export 'http-request' procedure
The 'http-request' procedure is the generalized procedure underneath
'http-get', 'http-post', etc.
** GDB support now registers the 'guile-backtrace' GDB command
The 'guile-backtrace' GDB command displays a backtrace of the VM stack
for the current thread.
** Recognize RISC-V compilation targets in (system base target)
* Bug fixes
** Fix stack-marking bug affecting multi-threaded programs
(<https://bugs.gnu.org/28211>)
** Add missing SYNC_IP calls in the VM
These could cause multi-threaded code to crash.
** Fix multi-threaded access to modules
(<https://bugs.gnu.org/30602>, <https://bugs.gnu.org/31879>,
and <https://bugs.gnu.org/31878>)
** (ice-9 match) now has better documentation
** 'get-bytevector-n' and 'get-bytevector-n!' can now read more than 4 GB
** Fix cross-compilation support for elisp
** Fix error reporting in 'load-thunk-from-memory'
** Fix GOOPS 'instance?' to work on objects that aren't structs
(<https://bugs.gnu.org/31606>)
** Fix type inference for bitwise logical operators
(<https://bugs.gnu.org/31474>)
** Avoid inexact arithmetic in the type inferrer for 'sqrt'
** Fix floating point unboxing regression in 2.2.3
(<https://bugs.gnu.org/30020>)
** Fix eta-conversion edge cases in peval (<https://bugs.gnu.org/29520>)
** Correctly interpret SRFI-18 timeout parameters
(<https://bugs.gnu.org/29704>)
** 'select' returns empty sets upon EINTR and EAGAIN
(<https://bugs.gnu.org/30368>)
** Restore pre-2.2.3 '%fresh-auto-compile' behavior
This reverts an incorrect fix for <https://bugs.gnu.org/29226>.
It looks like I accidentally built the 1.27.2 bootstrap without the stack clash
fix required for newer illumos platforms, so just use 1.28.0 which was built
correctly for now.
NetBSD/i386 is temporarily disabled due to missing binary bootstraps.
Version 1.28.0 (2018-08-02)
===========================
Language
--------
- [The `#[repr(transparent)]` attribute is now stable.][51562] This attribute
allows a Rust newtype wrapper (`struct NewType<T>(T);`) to be represented as
the inner type across Foreign Function Interface (FFI) boundaries.
- [The keywords `pure`, `sizeof`, `alignof`, and `offsetof` have been unreserved
and can now be used as identifiers.][51196]
- [The `GlobalAlloc` trait and `#[global_allocator]` attribute are now
stable.][51241] This will allow users to specify a global allocator for
their program.
- [Unit test functions marked with the `#[test]` attribute can now return
`Result<(), E: Debug>` in addition to `()`.][51298]
- [The `lifetime` specifier for `macro_rules!` is now stable.][50385] This
allows macros to easily target lifetimes.
Compiler
--------
- [The `s` and `z` optimisation levels are now stable.][50265] These optimisations
prioritise making smaller binary sizes. `z` is the same as `s` with the
exception that it does not vectorise loops, which typically results in an even
smaller binary.
- [The short error format is now stable.][49546] Specified with
`--error-format=short` this option will provide a more compressed output of
rust error messages.
- [Added a lint warning when you have duplicated `macro_export`s.][50143]
- [Reduced the number of allocations in the macro parser.][50855] This can
improve compile times of macro heavy crates on average by 5%.
Libraries
---------
- [Implemented `Default` for `&mut str`.][51306]
- [Implemented `From<bool>` for all integer and unsigned number types.][50554]
- [Implemented `Extend` for `()`.][50234]
- [The `Debug` implementation of `time::Duration` should now be more easily
human readable.][50364] Previously a `Duration` of one second would printed as
`Duration { secs: 1, nanos: 0 }` and will now be printed as `1s`.
- [Implemented `From<&String>` for `Cow<str>`, `From<&Vec<T>>` for `Cow<[T]>`,
`From<Cow<CStr>>` for `CString`, `From<CString>, From<CStr>, From<&CString>`
for `Cow<CStr>`, `From<OsString>, From<OsStr>, From<&OsString>` for
`Cow<OsStr>`, `From<&PathBuf>` for `Cow<Path>`, and `From<Cow<Path>>`
for `PathBuf`.][50170]
- [Implemented `Shl` and `Shr` for `Wrapping<u128>`
and `Wrapping<i128>`.][50465]
- [`DirEntry::metadata` now uses `fstatat` instead of `lstat` when
possible.][51050] This can provide up to a 40% speed increase.
- [Improved error messages when using `format!`.][50610]
Stabilized APIs
---------------
- [`Iterator::step_by`]
- [`Path::ancestors`]
- [`SystemTime::UNIX_EPOCH`]
- [`alloc::GlobalAlloc`]
- [`alloc::Layout`]
- [`alloc::LayoutErr`]
- [`alloc::System`]
- [`alloc::alloc`]
- [`alloc::alloc_zeroed`]
- [`alloc::dealloc`]
- [`alloc::realloc`]
- [`alloc::handle_alloc_error`]
- [`btree_map::Entry::or_default`]
- [`fmt::Alignment`]
- [`hash_map::Entry::or_default`]
- [`iter::repeat_with`]
- [`num::NonZeroUsize`]
- [`num::NonZeroU128`]
- [`num::NonZeroU16`]
- [`num::NonZeroU32`]
- [`num::NonZeroU64`]
- [`num::NonZeroU8`]
- [`ops::RangeBounds`]
- [`slice::SliceIndex`]
- [`slice::from_mut`]
- [`slice::from_ref`]
- [`{Any + Send + Sync}::downcast_mut`]
- [`{Any + Send + Sync}::downcast_ref`]
- [`{Any + Send + Sync}::is`]
Cargo
-----
- [Cargo will now no longer allow you to publish crates with build scripts that
modify the `src` directory.][cargo/5584] The `src` directory in a crate should be
considered to be immutable.
Misc
----
- [The `suggestion_applicability` field in `rustc`'s json output is now
stable.][50486] This will allow dev tools to check whether a code suggestion
would apply to them.
Compatibility Notes
-------------------
- [Rust will no longer consider trait objects with duplicated constraints to
have implementations.][51276] For example the below code will now fail
to compile.
```rust
trait Trait {}
impl Trait + Send {
fn test(&self) { println!("one"); } //~ ERROR duplicate definitions with name `test`
}
impl Trait + Send + Send {
fn test(&self) { println!("two"); }
}
```
This enables compiler-rt, libcxx, and libunwind, as well as fixing various
assumptions in the code about what should be set on SunOS. In bulk builds
a while back this was able to compete favourably with GCC.
libc++ is a new implementation of the C++ standard library, targeting
C++11.
Features and Goals
* Correctness as defined by the C++11 standard.
* Fast execution.
* Minimal memory use.
* Fast compile times.
* ABI compatibility with gcc's libstdc++ for some low-level features
such as exception objects, rtti and memory allocation.
* Extensive unit tests.
libc++abi is a new implementation of low level support for a standard
C++ library.
Features and Goals
* Correctness as defined by the C++11 standard.
* Provide a portable sublayer to ease the porting of libc++
* On Mac OS X, be ABI compatible with the existing low-level support.
The compiler-rt project consists of:
- builtins - a simple library that provides an implementation of the low-level
target-specific hooks required by code generation and other runtime
components. For example, when compiling for a 32-bit target, converting a
double to a 64-bit unsigned integer is compiling into a runtime call to the
"__fixunsdfdi" function. The builtins library provides optimized
implementations of this and other low-level routines, either in
target-independent C form, or as a heavily-optimized assembly.
- sanitizer runtimes - runtime libraries that are required to run the code
with sanitizer instrumentation. This includes runtimes for:
* AddressSanitizer
* ThreadSanitizer
* UndefinedBehaviorSanitizer
* MemorySanitizer
* LeakSanitizer
* DataFlowSanitizer
- profile - library which is used to collect coverage information.
- BlocksRuntime - a target-independent implementation of Apple "Blocks"
runtime interfaces.
6.0.1:
Non-comprehensive list of changes in this release
Support for retpolines was added to help mitigate “branch target injection” (variant 2) of the “Spectre” speculative side channels described by Project Zero and the Spectre paper.
The Redirects argument of llvm::sys::ExecuteAndWait and llvm::sys::ExecuteNoWait was changed to an ArrayRef of optional StringRef‘s to make it safer and more convenient to use.
The backend name was added to the Target Registry to allow run-time information to be fed back into TableGen. Out-of-tree targets will need to add the name used in the def X : Target definition to the call to RegisterTarget.
The Debugify pass was added to opt to facilitate testing of debug info preservation. This pass attaches synthetic DILocations and DIVariables to the instructions in a Module. The CheckDebugify pass determines how much of the metadata is lost.
Significantly improved quality of CodeView debug info for Windows.
Preliminary support for Sanitizers and sibling features on X86(_64) NetBSD (ASan, UBsan, TSan, MSan, SafeStack, libFuzzer).
Changes to the LLVM IR
----------------------
The fast-math-flags (FMF) have been updated. Previously, the ‘fast’ flag indicated that floating-point reassociation was allowed and all other flags were set too. The ‘fast’ flag still exists, but there is a new flag called ‘reassoc’ to indicate specifically that reassociation is allowed. A new bit called ‘afn’ was also added to selectively allow approximations for common mathlib functions like square-root. The new flags provide more flexibility to enable/disable specific floating-point optimizations. Making the optimizer respond appropriately to these flags is an ongoing effort.
Changes to the AArch64 Target
-----------------------------
Enabled the new GlobalISel instruction selection framework by default at -O0.
Changes to the ARM Target
-------------------------
Support for enabling SjLj exception handling on platforms where it isn’t the default.
Changes to the Hexagon Target
-----------------------------
The Hexagon backend now supports V65 ISA.
The -mhvx option now takes an optional value that specifies the ISA version of the HVX coprocessor. The available values are v60, v62 and v65. By default, the value is set to be the same as the CPU version.
The compiler option -mhvx-double is deprecated and will be removed in the next release of the compiler. Programmers should use the -mhvx-length option to specify the desired vector length: -mhvx-length=64b for 64-byte vectors and -mhvx-length=128b for 128-byte vectors. While the current default vector length is 64 bytes, users should always specify the length explicitly, since the default value may change in the future.
The target feature hvx-double is deprecated and will be removed in the next release. LLVM IR generators should use target features hvx-length64b and hvx-length128b to indicate the vector length. The length should always be specified when HVX code generation is enabled.
Changes to the MIPS Target
--------------------------
Fixed numerous bugs:
fpowi on MIPS64 giving incorrect results when used with a negative integer.
Usage of the asm ‘c’ constraint with the wrong datatype causing an assert/crash.
Fixed a conversion bug when using the DSP ASE.
Fixed an inconsistency where objects were not marked as using the microMIPS as when the micromips function attribute or the ”.set micromips” directive was used.
Reordered the MIPSR6 specific hazard scheduler pass to after the delay slot filler, fixing a class of rare edge case bugs where the delay slot filler would violate ISA restrictions.
Fixed a crash when using a type of unknown size with gp relative addressing.
Corrected the j macro for microMIPS.
Corrected the encoding of movep for microMIPS32r6.
Fixed an issue with the usage of insert instructions having an invalid set of operands.
Fixed an issue where TLS symbols were not marked as such.
Enabled the usage of register scavenging with MSA, due to its shorter offsets for loads and stores.
Corrected the ELF headers when using the DSP ASE.
New features:
The long branch pass now generates some R6 specific instructions when targeting MIPSR6.
The delay slot filler now performs more branch conversions if delay slots cannot be filled.
The MIPS MT ASE is now fully supported.
Added support for the lapc pseudo instruction.
Improved the selection of multiple instructions (dext, nmadd, nmsub).
Further improved microMIPS codesize reduction.
Deprecation notices:
microMIPS64R6 support was been deprecated since 5.0, and has now been completely removed.
Changes to the SystemZ Target
-----------------------------
During this release the SystemZ target has:
Added support for 128-bit atomic operations.
Added support for the “o” constraint for inline asm statements.
Changes to the X86 Target
-------------------------
During this release the X86 target has:
Added support for enabling SjLj exception handling on platforms where it isn’t the default.
Added intrinsics for Intel Extensions: VAES, GFNI, VPCLMULQDQ, AVX512VBMI2, AVX512BITALG, AVX512VNNI.
Added support for Intel Icelake CPU.
Fixed some X87 codegen bugs.
Added instruction scheduling information for Intel Sandy Bridge, Ivy Bridge, Haswell, Broadwell, and Skylake CPUs.
Improved scheduler model for AMD Jaguar CPUs.
Improved llvm-mc’s disassembler for some EVEX encoded instructions.
Add support for i8 and i16 vector signed/unsigned min/max horizontal reductions.
Improved codegen for memory comparisons
Improved codegen for i32 vector multiplies
Improved codegen for scalar integer absolute values
Improved codegen for vector integer rotations (XOP and AVX512)
Improved codegen of data being transferred between GPRs and K-registers.
Improved codegen for vector truncations.
Improved folding of address computations into gather/scatter instructions.
Gained initial support recognizing variable shuffles from vector element extracts and inserts.
Improved documentation for SSE/AVX intrinsics in intrin.h header files.
Gained support for emitting retpolines, including automatic insertion of the necessary thunks or using external thunks.
Paver is a Python-based build/distribution/deployment scripting tool along the
lines of Make or Rake. What makes Paver unique is its integration with commonly
used Python libraries. Common tasks that were easy before remain easy. More
importantly, dealing with your applications specific needs and requirements is
also easy.
The list of improvements, additions, bugfixes and so on is quite large;
those interested can refer to the CHANGES file in the distribution.
The reference manual has been fully ported to Sphinx.
## v6.3.0 (2018-08-01):
- `figgy-pudding@3.2.0`
- `cacache@11.1.0`
## v6.3.0-next.0 (2018-07-25):
### NEW FEATURES
- `npm version` now supports a `--preid` option to specify the preid
for prereleases. For example, `npm version premajor --preid rc` will tag
a version like `2.0.0-rc.0`.
### MESSAGING IMPROVEMENTS
- Make `npm audit fix` message provide better instructions for
vulnerabilities that require manual review.
- Fix missing colon next to tarball url in new `npm view` output.
- Use the defaut OTP explanation everywhere except when the context is
"OTP-aware" (like when setting double-authentication). This improves
the overall CLI messaging when prompting for an OTP code.
### MISC
- Use the extracted `stringify-package` package.
- `wrappy` was previously added to dependencies in order to flatten
it, but we no longer do legacy-style for npm itself, so it has been
removed from `package.json`.
## v6.2.0 (2018-07-13):
### FEATURES
- Add support for tab-separated output for `npm audit` data with the
`--parseable` flag.
- Add new `sign-git-commit` config to control whether the git commit
itself gets signed, or just the tag (which is the default).
### FIXES
- Do not use `SET` to fetch the env in git-bash or Cygwin.
### DEPENDENCY BUMPS
- `request@2.81.0`: Downgraded to allow better deduplication. This
does introduce a bunch of `hoek`-related audit reports, but they don't
affect npm itself so we consider it safe. We'll upgrade `request` again
once `node-gyp` unpins it.
- `node-gyp@3.7.0`
_ `cli-table3@0.5.0`: `cli-table2` is unmaintained and required
`lodash`. With this dependency bump, we've removed `lodash` from our tree,
which cut back tarball size by another 300kb.
- `npm-audit-report@1.3.1`
- Add `cli-table3` to bundleDeps.
- Make `standard` happy.
## v6.2.0-next.1 (2018-07-05):
- Remove postinstall script that depended on source files, thus
preventing `npm@next` from being installable from the registry.
## v6.2.0-next.0 (2018-06-28):
### NEW FEATURES
- You can now disable the update notifier entirely by using
`--no-update-notifier` or setting it in your config with `npm config
set update-notifier false`.
- When `npm run-script <script>` fails due to a typo or missing
script, npm will now do a "did you mean?..." for scripts that do exist.
### BUGFIXES
- Fix the regular expression matching in `xcode_emulation` in
`node-gyp` to also handle version numbers with multiple-digit major
versions which would otherwise break under use of XCode 10.
- Stop trying to hoist/dedupe bundles dependencies.
- Add synopsis to brief help for `npm audit` and suppress trailing
newline.
- Exclude /.github directory from npm tarball.
- Add suggestion to use a temporary cache instead of `npm cache clear
--force`.
### DEPENDENCY SHUFFLE!
We did some reshuffling and moving around of npm's own dependencies.
This significantly reduces the total bundle size of the npm pack,
from 8MB to 4.8MB for the distributed tarball! We also moved around
what we actually commit to the repo as far as devDeps go.
- Flatten and dedupe our dependencies!
- Remove unused direct dependency `ansi-regex`.
- Reshuffle ansi-regex for better deduping.
- Reshuffle strip-ansi for better deduping.
- Reshuffle is-fullwidth-code-point for better deduping.
- Add fake-registry, npm-registry-mock replacement.
### DEPENDENCIES
- `tar@4.4.3`
- `pacote@8.1.6`
- `libcipm@2.0.0`
- `request@2.87.0`
- `which@1.3.1`
- `tar@4.4.4`
- `JSONStream@1.3.3`
- `is-cidr@2.0.6`
- `marked@0.4.0`
- `tap@12.0.1`
- `npm-profile@3.0.2`
- `uuid@3.3.2`
Changes:
3.6.6
-----
Documentation
- bpo-33503: Fix broken pypi link
- bpo-33421: Add missing documentation for typing.AsyncContextManager.
- bpo-33378: Add Korean language switcher for https://docs.python.org/3/
- bpo-33276: Clarify that the __path__ attribute on modules cannot be just
any value.
- bpo-33201: Modernize documentation for writing C extension types.
- bpo-33195: Deprecate Py_UNICODE usage in c-api/arg document.
Py_UNICODE related APIs are deprecated since Python 3.3, but it
is missed in the document.
- bpo-33126: Document PyBuffer_ToContiguous().
- bpo-27212: Modify documentation for the islice() recipe to consume initial
values up to the start index.
- bpo-28247: Update zipapp documentation to describe how to make standalone
applications.
- bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and
Berker Peksag.
- bpo-27428: Update documentation to clarify that WindowsRegistryFinder
implements MetaPathFinder. (Patch by Himanshu Lakhara)
- bpo-8243: Add a note about curses.addch and curses.addstr exception
behavior when writing outside a window, or pad.
- bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED
flags for ssl.SSLContext.verify_mode.
Seems to make a previously segfaulting netbsd-8/i386's build not segfault.
ap-php runs PHP's configure and builds some of its code, so it needs the
same flag.
Now we can stop requiring an arbitrary GCC version. The test case in the
GCC bugzilla fails on all GCC versions I tested, but magically some
versions of GCC manage to build a working PHP.
The bundled one has issues with newer GCCs, and the pkgsrc one is newer and
optimised, so switching is simpler than trying to retro-fit an old version.
Fix --with-gc, this appears to have always been broken, and our --with-gc=none
argument actually ended up as --with-gc=included, so make that now explicit.
Bump PKGREVISION.
* Use gmake for pattern rules
Changelog:
Release 0.9.6
Major feature upgrade
* Notable feature enhancement:
* New modules and procedures
+ R7RS-Large Red Edition support (WiLiKi:Gauche:R7RS-RedEdition)
+ New srfi support:
+ Other new modules and procedures:
* Incompatible changes
* Other bug fixes
Notable feature enhancement:
* Static linking and standalone executable support: Now you can create a
standalone executable from Gauche program. See blog entry and "Building
standalone executables" section.
* Single shell-script installer (blog entry).
* REPL enhancement: Pretty printing (blog entry), online document display (
blog entry) and search (blog entry).
* Method dispatch optimizations (1, 2).
* Procedure inlining optimizations (1, 2)
* Windows console Japanese handling: Thanks to @hamayama, numerous fixes to
use Japanese on Windows command prompt is incorporated.
* Bump to Boehm gc 7.6.6, thanks to @qykth-git.
* Support mbedTLS as an additional TLS support, thanks to @qykth-git. See
rfc.tls for the details.
* format finally supports floating number formatting ~f. It also supports a
subtle rounding mode switch regarding binary to decimal conversion (blog
post).
* Support of using multiple versions of Gauche in parallel---from 0.9.6 and
after, you can invoke a different version of Gauche by gosh -vVERSION, as
far as VERSION of Gauche is also installed. This isn't much useful now
(VERSION must be 0.9.6 or later), but will be handy with future releases.
* Sampling profiler now works on Windows, thanks to Saito Atsushi and
@hamayama (although it can only sample the attached thread).
New modules and procedures
R7RS-Large Red Edition support (WiLiKi:Gauche:R7RS-RedEdition)
12 libraries (out of 17) are supported:
* scheme.list List library (formerly srfi-1)
* scheme.vector Vector library (formerly srfi-133)
* scheme.sort Sort libraries (formerly srfi-132)
* scheme.set Sets and bags (formerly srfi-113)
* scheme.charset Character-set library (formerly srfi-14)
* scheme.hash-table Intermediate hash tables (formerly srfi-125)
* scheme.ideque Immutable deques (formerly srfi-134
* scheme.generator Generators (formerly srfi-121)
* scheme.lseq Lazy sequences (formerly srfi-127)
* scheme.box Boxes (formerly srfi-111)
* scheme.list-queue Mutable queues (formerly srfi-117)
* scheme.comparator Comparators (formerly srfi-128)
Those are still accessible as srfi-* names, but new code is recommended to use
the scheme.* names.
New srfi support:
* srfi-64 A Scheme API for test suites
* srfi-66 Octet vectors
* srfi-74 Octet-addressed binary blocks
* srfi-96 SLIB prerequisites
* srfi-129 Titlecase procedures
* srfi-141 Integer division
* srfi-143 Fixnums
* srfi-145 Assumptions (built-in)
* srfi-146 Mappings
+ srfi-146.hash Hashmaps
* srfi-149 Basic Syntax-rules template extensions (built-in)
* srfi-151 Bitwise operations
* srfi-152 String library (reduced)
* srfi-158 Generators and accumulators
Other new modules and procedures:
* pprint - pretty printer.
* assume-type macro and type-error procedure.
* define-inline is now official.
* hash-table-compare-as-sets, tree-map-compare-as-sets - compare those
mappings as sets
* let-values, let*-values: now built-in.
* In gauche.process: do-process!, do-pipeline, run-pipeline!.
* In gauche.unicode: char-east-asian-width
* In gauche.uvector: uvector-binary-search, u8vector=? ..., u8vector-compare
....
* In gauche.charconv: Conversion routines accepts u8vector as well as
strings.
* In gauche.sequence: delete-neighbor-dups, delete-neighbor-dups!,
delete-neighbor-dups-squeeze!, group-contiguous-sequence
* In gauche.threads: atomic and atomic-update! allows more than one timeout
values.
* text.template: Simple template expander, based on built-in string
interpolation feature.
* Char-set can be immutable. char-set-freeze and char-set-freeze! are used to
make a char set immutable. Literal char-sets are immutable, as other
literal objects.
* rfc.http: You can now use stunnel process to do https connection instead of
Gauche's rfc.tls module. Note that it only works with command mode of
stunnel---which isn't available on Windows.
* rfc.tls: Now that we support mbedTLS and server certificate authentication,
a minimal document is added.
* binary.io: get-uint, get-sint, put-uint!, put-sint!.
* gauche.generator: generator->uvector, generator->uvector!, generator->
bytevector, generator->bytevector!.
* data.random: regular-string$ - creates a generator that generates random
strings that match the given regexp.
* string-incomplete->complete: Add :escape mode to escape illegal bytes in
lossless way.
Incompatible changes
Some change undocumented behaviors; others change because of bug fix.
* Literal character sets (#[chars]) are now immutable, as other literal
objects; it will raise an error if you try to mutate it.
* getter-with-setter now associates the setter to the getter in immutable way
('locked'); it will raise an error if you try to change it. It is the way
specified in srfi-17. It also allows Gauche to inline setters. (NB: Many
predefined setters are now locked. If your existing code alters them it
will cause an error.)
* list*, cons* - Requires at least one arg, as specified in srfi-1. Zero
argument doesn't make sense, although previous versions of Gauche allowed
it.
* append, append! - Now it is an error if the arguments except the last one
is a dotted list. We've tolerated it before, but it's rather error prone.
* util.match: The way to match record instance with positional variables are
changed for more reasonable way. We hope no code depends on the previous
way, which was broken anyway. See the blog entry for the details.
* twos-complement-factor: We fix the behavior when 0 is passed; it used to
return 0, now it returns -1. The latter is consistent with srfi-60.
Unfortunately we documented the former behavior, so it breaks
compatibility.
* string-split: Splitting an empty string now yields an empty list instead of
(""), as srfi-152 specifies
Other bug fixes
There are too many; we list up some notable ones.
* The behavior of guard when no clauses are satisfied and the exception is
reraised is now R7RS-compatible ( https://github.com/shirok/Gauche/pull/335
). When using R7RS, with-exception-handler is R7RS compatible (which is
slightly different from built-in with-exception-handler, compatible to
srfi-18).
* unwind-protect: Fix bug with interaction of call/cc.
* rfc.tls: axTLS interface had MT-hazard.
* er-macro-transformer: Fix hygienity issue ( https://github.com/shirok/
Gauche/issues/250 )
First and foremost, I have added some patches that disable MPROTECT for
some Racket executables and fix PR pkg/53467.
As for changes since the latest version, 6.11, these include:
* Changed the way some unsafe operations are exposed via `ffi/unsafe`
libraries to help smooth a future transition to a new runtime system.
* The `syntax-parse` form supports unwinding side-effects when it
backtracks, both explicitly with `~undo` patterns and implicitly
with the built-in managed state (using `syntax-parse-state-ref`,
etc).
* The `db` library supports SCRAM-SHA-256 authentication for backends
running PostgreSQL 10 or later. Client support for SCRAM and other
SASL mechanisms is provided by the new `sasl` library.
* The `lazy-require-syntax` form supports lazy loading of macro
transformers. Note that the macros must obey certain implementation
constraints (see the `lazy-require-syntax` documentation).
* Typed Racket no longer enforces types like `(U String (Boxof String))`
with the `any/c` contract. This fixes a type soundness issue, but may
affect performance. Please submit a bug report if you find a program
that runs significantly slower on v6.12 than earlier versions.
* Typed Racket's type instantiation (`inst`) uses `Any` for omitted type
arguments, allowing APIs to add additional type variables to functions
without breaking existing programs.
* `for/fold` users can customize the final result of a loop's computation
using the `#:result` keyword.
* The `--deps` option to `raco test` tests the packages the argument
packages depends on, in addition to testing the packages themselves.
For example, `raco test -p --deps pkg1 pkg2` tests all files from
`pkg1`, `pkg2`, and all of their dependencies.
Changelog:
Version 1.27.2 (2018-07-20)
Compatibility Notes
* The borrow checker was fixed to avoid potential unsoundness when using
match ergonomics: #52213.
Version 1.27.1 (2018-07-10)
Security Notes
* rustdoc would execute plugins in the /tmp/rustdoc/plugins directory when
running, which enabled executing code as some other user on a given
machine. This release fixes that vulnerability; you can read more about
this on the blog.
Thank you to Red Hat for responsibily disclosing this vulnerability to us.
Compatibility Notes
* The borrow checker was fixed to avoid an additional potential unsoundness
when using match ergonomics: #51415, #49534.