version 1.0.5 (Jul 27, 2020):
* Bumped libenchant’s version to libenchant2
* Fixed build and link errors
* Fixed copyright headers to only have start date
version 1.0.4 (Aug 07, 2014):
* Fixed an issue in generating examples for verbs like 'get married' to strip
'_' character in the lemma
Upstream changes
https://github.com/sparklemotion/nokogiri/releases/tag/v1.12.4
1.12.4 / 2021-08-29
Notable fix: Namespace inheritance
Namespace behavior when reparenting nodes has historically been poorly
specified and the behavior diverged between CRuby and JRuby. As a result,
making this behavior consistent in v1.12.0 introduced a breaking change.
This patch release reverts the Builder behavior present in v1.12.0..v1.12.3 but
keeps the Document behavior. This release also introduces a Document attribute
to allow affected users to easily change this behavior for their legacy code
without invasive changes.
Compensating Feature in XML::Document
This release of Nokogiri introduces a new Document boolean attribute,
namespace_inheritance, which controls whether children should inherit a
namespace when they are reparented. Nokogiri::XML:Document defaults this
attribute to false meaning "do not inherit," thereby making explicit the
behavior change introduced in v1.12.0.
CRuby users who desire the pre-v1.12.0 behavior may set
document.namespace_inheritance = true before reparenting nodes.
See https://nokogiri.org/rdoc/Nokogiri/XML/Document.html#
namespace_inheritance-instance_method for example usage.
Fix for XML::Builder
However, recognizing that we want Builder-created children to inherit
namespaces, Builder now will set namespace_inheritance=true on the underlying
document for both JRuby and CRuby. This means that, on CRuby, the pre-v1.12.0
behavior is restored.
Users who want to turn this behavior off may pass a keyword argument to the
Builder constructor like so:
Nokogiri::XML::Builder.new(namespace_inheritance: false)
See https://nokogiri.org/rdoc/Nokogiri/XML/Builder.html#
label-Namespace+inheritance for example usage.
Downstream gem maintainers
Note that any downstream gems may want to specifically omit Nokogiri
v1.12.0--v1.12.3 from their dependency specification if they rely on child
namespace inheritance:
Gem::Specification.new do |gem|
# ...
gem.add_runtime_dependency 'nokogiri', '!=1.12.3', '!=1.12.2', '!=1.12.1', '!=1.12.0'
# ...
end
Fixed
* [JRuby] Fix NPE in Schema parsing when an imported resource doesn't have a
systemId. [#2296] (Thanks, @pepijnve!)
Version 0.5.1 (recent):
- Use doctype HTML5 instead of XHTML optionally (thanks to Dan Nagle)
- Rewrote man page using mdoc (thanks to Stephen Gregoratto)
- Removed extra linebreak at end (thanks to Ryan Hendrickson)
- Use the #hex format for colours (thanks to suve)
- Added optional language attribute
- Added vbcc support (thanks to polluks)
- Fixed handling of SGR 39/49 (thanks to Patric Mueller)
- Added css inline option
- Added --style option for inlining css styles like font size (thanks to Ted Lyngmo)
# 1.0.5
* Translate `\` in lambda expression to `OP-LAMBDA` (#18 @renkun-ken).
* Drop all control characters, except horizontal tab and newline (#19).
# 1.0.4
* Translate ] tokens to `OP-RIGHT-BRACKET` instead of
`OP-RIGHT-BRACE` (#11 @AshesITR).
* `xml_parse_data()` now works if `includeText = FALSE`
(#14 @renkun-ken).
3.3.111 01sep21 Fix in fstapi for read start limit time.
Fix xml2stems when begin blocks are in functions.
Skip over decimal point in timescale in viewer.
httpuv 1.6.3
============
* Increased required version of Rcpp to 1.0.7, to work around an
incompatibility between Rcpp 1.0.6 and packages compiled with
Rcpp 1.0.7.
htmlwidgets 1.5.4
-------------------------------------------------------
* Closed#320: `getDependency()` no longer includes an absolute src path in its return value. (#384)
* Fixed#408: An error type-check did not work correctly because it was missing parentheses. (#409)
[0.10.0]
- fix sortlist attribute for dta format 119
- fix compress option. In the past, unwanted conversions to integer type could occur.
- fix encoding issues in variable and data labels
- fix for reading/writing of format 119
- fix build on FreeBSD
- new feature: improved handling of time and date formats
- new feature: collect warnings from read.dta13
# readr 2.0.1
* `options(readr.show_col_types = FALSE)` now works as intended (#1250)
* `read_delim_chunked()` now again correctly respects the `chunk_size`
parameter (#1248)
* `read_tsv()` now correctly passes the `quote` and `na` arguments to
`vroom::vroom()` (#1254, #1255)
* Avoid spurious byte compilation errors due to the programatically
generated `spec_*()` functions.
# readr 2.0.0
## second edition changes
readr 2.0.0 is a major release of readr and introduces a new second
edition parsing and writing engine implemented via the
[vroom](https://vroom.r-lib.org/) package.
This engine takes advantage of lazy reading, multi-threading and
performance characteristics of modern SSD drives to significantly
improve the performance of reading and writing compared to the first
edition engine.
We will continue to support the first edition for a number of
releases, but eventually this support will be first deprecated and
then removed.
You can use the `with_edition()` or `local_edition()` functions to
temporarily change the edition of readr for a section of code.
e.g.
- `with_edition(1, read_csv("my_file.csv"))` will read `my_file.csv`
with the first edition of readr.
- `readr::local_edition(1)` placed at the top of your function or
script will use the first edition for the rest of the function or
script.
### Lazy reading
Edition two uses lazy reading by default.
When you first call a `read_*()` function the delimiters and newlines
throughout the entire file are found, but the data is not actually
read until it is used in your program. This can provide substantial
speed improvements for reading character data. It is particularly
useful during interactive exploration of only a subset of a full
dataset.
However this also means that problematic values are not necessarily
seen immediately, only when they are actually read. Because of this a
warning will be issued the first time a problem is encountered, which
may happen after initial reading.
Run `problems()` on your dataset to read the entire dataset and return
all of the problems found.
Run `problems(lazy = TRUE)` if you only want to retrieve the problems
found so far.
Deleting files after reading is also impacted by laziness.
On Windows open files cannot be deleted as long as a process has the
file open. Because readr keeps a file open when reading lazily this
means you cannot read, then immediately delete the file. readr will
in most cases close the file once it has been completely read.
However, if you know you want to be able to delete the file after
reading it is best to pass `lazy = FALSE` when reading the file.
### Reading multiple files at once
Edition two has built-in support for reading sets of files with the
same columns into one output table in a single command. Just pass the
filenames to be read in the same vector to the reading function.
First we generate some files to read by splitting the nycflights dataset by
airline.
```{r}
library(nycflights13)
purrr::iwalk(
split(flights, flights$carrier),
~ { .x$carrier[[1]]; vroom::vroom_write(.x, glue::glue("flights_{.y}.tsv"), delim = "\t") }
)
```
Then we can efficiently read them into one tibble by passing the filenames
directly to readr.
```{r}
files <- fs::dir_ls(glob = "flights*tsv")
files
readr::read_tsv(files)
```
If the filenames contain data, such as the date when the sample was collected,
use `id` argument to include the paths as a column in the data.
You will likely have to post-process the paths to keep only the relevant portion for your use case.
### Delimiter guessing
Edition two supports automatic guessing of delimiters.
Because of this you can now use `read_delim()` without specifying a `delim` argument in many cases.
```{r}
x <- read_delim(readr_example("mtcars.csv"))
```
### Literal data
In edition one the reading functions treated any input with a newline
in it or vectors of length > 1 as literal data. In edition two
vectors of length > 1 are now assumed to correspond to multiple files.
Because of this we now have a more explicit way to represent literal
data, by putting `I()` around the input.
```{r}
readr::read_csv(I("a,b\n1,2"))
```
### License changes
We are systematically re-licensing tidyverse and r-lib packages to use
the MIT license, to make our package licenses as clear and permissive
as possible.
To this end the readr and vroom packages are now released under the MIT license.
### Deprecated or superseded functions and features
* `melt_csv()`, `melt_delim()`, `melt_tsv()` and `melt_fwf()` have
been superseded by functions in the same name in the meltr package.
The versions in readr have been deprecated. These functions rely on
the first edition parsing code and would be challenging to update to
the new parser. When the first edition parsing code is eventually
removed from readr they will be removed.
* `read_table2()` has been renamed to `read_table()`, as most users
expect `read_table()` to work like `utils::read.table()`. If you
want the previous strict behavior of the `read_table()` you can use
`read_fwf()` with `fwf_empty()` directly (#717).
* Normalizing newlines in files with just carriage returns `\r` is no
longer supported. The last major OS to use only CR as the newline
was 'classic' Mac OS, which had its final release in 2001.
### Other second edition changes
* `read_*_chunked()` functions now include their specification as an
attribute (#1143)
* All `read_*()` functions gain a `col_select` argument to more easily
choose which columns to select.
* All `read_*()` functions gain a `id` argument to optionally store
the file paths when reading multiple files.
* All `read_*()` functions gain a `name_repair` argument to control
how column names are repaired.
* All `read_*()` and `write_*()` functions gain a `num_threads`
argument to control the number of processing threads they use
(#1201)
* All `write_*()` and `format_*()` functions gain `quote` and `escape`
arguments, to explicitly control how fields are quoted and how
double quotes are escaped. (#653, #759, #844, #993, #1018, #1083)
* All `write_*()` functions gain a `progress` argument and display a
progress bar when writing (#791).
* write_excel_csv() now defaults to `quote = "all"` (#759)
* write_tsv() now defaults to `quote = "none"` (#993)
* `read_table()` now handles skipped lines with unpaired quotes properly (#1180)
## Additional features and fixes
* The BH package is no longer a dependency. The boost C++ headers in
BH have thousands of files, so can take a long time to extract and
compiling them takes a great deal of memory, which made readr
difficult to compile on systems with limited memory (#1147).
* readr now uses the tzdb package when parsing date-times
(@DavisVaughan, r-lib/vroom#273)
* Chunked readers now support files with more than `INT_MAX` (~ 2
Billion) number of lines (#1177)
* Memory no longer inadvertently leaks when reading memory from R
connections (#1161)
* Invalid date formats no longer can potentially crash R (#1151)
* `col_factor()` now throws a more informative error message if given
non-character levels (#1140)
* `problems()` now takes `.Last.value` as its default argument. This
lets you run `problems()` without an argument to see the problems in
the previously read dataset.
* `read_delim()` fails when sample of parsing problems contains
non-ASCII characters (@hidekoji, #1136)
* `read_log()` gains a `trim_ws` argument (#738)
* `read_rds()` and `write_rds()` gain a `refhook` argument, to pass
functions that handle references objects (#1206)
* `read_rds()` can now read .Rds files from URLs (#1186)
* `read_*()` functions gain a `show_col_types` argument, if set to
`FALSE` this turns off showing the column types unconditionally.
* `type_convert()` now throws a warning if the input has no character
columns (#1020)
* `write_csv()` now errors if given a matrix column (#1171)
* `write_csv()` now again is able to write data with duplicated column
names (#1169)
* `write_file()` now forces its argument before opening the output
file (#1158)
# readr 1.4.0
## Breaking changes
* `write_*()` functions first argument is now `file` instead of
`path`, for consistency with the `read_*()` functions. `path` has
been deprecated and will be removed in a future version of readr
(#1110, @brianrice2)
* `write_*()` functions now output any NaN values in the same way as
NA values, controlled by the `na=` argument. (#1082).
## New features
* It is now possible to generate a column specification from any
tibble (or data.frame) with `as.col_spec()` and convert any column
specification to a short representation with `as.character()`
s <- as.col_spec(iris)
s
#> cols(
#> Sepal.Length = col_double(),
#> Sepal.Width = col_double(),
#> Petal.Length = col_double(),
#> Petal.Width = col_double(),
#> Species = col_factor(levels = c("setosa", "versicolor", "virginica"), ordered = FALSE, include_na = FALSE)
#> )
as.character(s)
#> [1] "ddddf"
* The cli package is now used for all messages.
* The runtime performance for tables with an extreme number of columns
is greatly improved (#825)
* Compressed files are now detected by magic numbers rather than by
the file extension (#1125)
* A memory leak when reading files is now fixed (#1092)
* `write_*()` functions gain a `eol =` argument to control the end of
line character used (#857). This allows writing of CSV files with
Windows newlines (CRLF) if desired.
* The Rcpp dependency has been removed in favor of cpp11.
* The build system has been greatly simplified so should work on more
systems.
## Additional features and fixes
* The full problem field is now displayed in the problems tibble, as
intended (#444).
* New `%h` placeholder for parsing unrestricted hours (<0 and >23) to
support parsing durations (#549, @krlmlr).
* `as.character.col_spec()` now handles logical columns as well
(#1127)
* `fwf_positions(end)` no longer has a default argument and must be
specified (#996)
* `guess_parser()` gains a `na` argument and removes NA values before
guessing (#1041).
* `parse_guess()` now passes the `na` argument to `guess_parser()`
* `read_*` functions now close properly all connections, including on
errors like HTTP errors when reading from a url (@cderv, #1050).
* `read_delimited()` no longer mistakenly stats literal filenames (#1063)
* `read_lines()` now ignores quotations when skipping lines (#991).
* `read_lines(skip_empty_rows = TRUE)` no longer crashes if a file
ends with an empty line (#968)
* `write_*()` functions now invisibly return the input data frame
unchanged, rather than a version with factors and dates converted to
strings. (@jesse-ross, #975).
* `write_csv2()` now formats decimal numbers more consistently with
`utils::write.csv2()` (#1087)
* `write_csv2()` and `format_csv2()` no longer pad number columns with
whitespaces (@keesdeschepper, #1046).
* `write_excel_csv()` no longer outputs a byte order mark when
appending to a file (#1075).
* Uses of `tibble::data_frame` updated to `tibble::tibble`
([tidyverse/dplyr#4069](https://github.com/tidyverse/dplyr/issues/4069),
@thays42, #1124, @brianrice2)
* `read_delimited()` now returns an empty `tibble::data_frame()`
rather than signaling an error when given a connection with an empty
file (@pralitp, #963).
* More helpful error when trying to write out data frames with list
columns (@ellessenne, #938)
* `type_convert()` removes a 'spec' attribute, because the current
columns likely have modified data types. The 'spec' attribute is
set by functions like `read_delim()` (@jimhester, @wibeasley,
#1032).
* `write_rds()` now can specify the Rds version to use. The default
value is 2 as it's compatible to R versions prior to 3.5.0
(@shrektan, #1001).
* Fixes for issues related to variable initialization in C++ code
(@michaelquinn32, ##1133).
Requested by gdt@, taken from wip, any mismerges are mine and I'll follow up.
While here pull in an additional fix from newer wip to disable the docs (they
are absolutely huge and not all that useful).
Version 1.54.0 (2021-07-29)
============================
Language
-----------------------
- [You can now use macros for values in built-in attribute macros.][83366]
While a seemingly minor addition on its own, this enables a lot of
powerful functionality when combined correctly. Most notably you can
now include external documentation in your crate by writing the following.
```rust
#![doc = include_str!("README.md")]
```
You can also use this to include auto-generated modules:
```rust
#[path = concat!(env!("OUT_DIR"), "/generated.rs")]
mod generated;
```
- [You can now cast between unsized slice types (and types which contain
unsized slices) in `const fn`.][85078]
- [You can now use multiple generic lifetimes with `impl Trait` where the
lifetimes don't explicitly outlive another.][84701] In code this means
that you can now have `impl Trait<'a, 'b>` where as before you could
only have `impl Trait<'a, 'b> where 'b: 'a`.
Compiler
-----------------------
- [Rustc will now search for custom JSON targets in
`/lib/rustlib/<target-triple>/target.json` where `/` is the "sysroot"
directory.][83800] You can find your sysroot directory by running
`rustc --print sysroot`.
- [Added `wasm` as a `target_family` for WebAssembly platforms.][84072]
- [You can now use `#[target_feature]` on safe functions when targeting
WebAssembly platforms.][84988]
- [Improved debugger output for enums on Windows MSVC platforms.][85292]
- [Added tier 3\* support for `bpfel-unknown-none`
and `bpfeb-unknown-none`.][79608]
Libraries
-----------------------
- [`panic::panic_any` will now `#[track_caller]`.][85745]
- [Added `OutOfMemory` as a variant of `io::ErrorKind`.][84744]
- [ `proc_macro::Literal` now implements `FromStr`.][84717]
- [The implementations of vendor intrinsics in core::arch have been
significantly refactored.][83278] The main user-visible changes are
a 50% reduction in the size of libcore.rlib and stricter validation
of constant operands passed to intrinsics. The latter is technically
a breaking change, but allows Rust to more closely match the C vendor
intrinsics API.
Stabilized APIs
---------------
- [`BTreeMap::into_keys`]
- [`BTreeMap::into_values`]
- [`HashMap::into_keys`]
- [`HashMap::into_values`]
- [`arch::wasm32`]
- [`VecDeque::binary_search`]
- [`VecDeque::binary_search_by`]
- [`VecDeque::binary_search_by_key`]
- [`VecDeque::partition_point`]
Cargo
-----
- [Added the `--prune <spec>` option to `cargo-tree` to remove a package from
the dependency graph.][cargo/9520]
- [Added the `--depth` option to `cargo-tree` to print only to a certain depth
in the tree ][cargo/9499]
- [Added the `no-proc-macro` value to `cargo-tree --edges` to hide procedural
macro dependencies.][cargo/9488]
- [A new environment variable named `CARGO_TARGET_TMPDIR` is available.][cargo/9375]
This variable points to a directory that integration tests and benches
can use as a "scratchpad" for testing filesystem operations.
Compatibility Notes
-------------------
- [Mixing Option and Result via `?` is no longer permitted in closures for inferred types.][86831]
- [Previously unsound code is no longer permitted where different constructors in branches
could require different lifetimes.][85574]
- As previously mentioned the [`std::arch` instrinsics now uses stricter const checking][83278]
than before and may reject some previously accepted code.
- [`i128` multiplication on Cortex M0+ platforms currently unconditionally causes overflow
when compiled with `codegen-units = 1`.][86063]
Version 1.53.0 (2021-06-17)
============================
Language
-----------------------
- [You can now use unicode for identifiers.][83799] This allows multilingual
identifiers but still doesn't allow glyphs that are not considered characters
such as `~W~F` or `~_~@`. More specifically you can now use any identifier that
matches the UAX #31 "Unicode Identifier and Pattern Syntax" standard. This
is the same standard as languages like Python, however Rust uses NFC
normalization which may be different from other languages.
- [You can now specify "or patterns" inside pattern matches.][79278]
Previously you could only use `|` (OR) on complete patterns. E.g.
```rust
let x = Some(2u8);
// Before
matches!(x, Some(1) | Some(2));
// Now
matches!(x, Some(1 | 2));
```
- [Added the `:pat_param` `macro_rules!` matcher.][83386] This matcher
has the same semantics as the `:pat` matcher. This is to allow `:pat`
to change semantics to being a pattern fragment in a future edition.
Compiler
-----------------------
- [Updated the minimum external LLVM version to LLVM 10.][83387]
- [Added Tier 3\* support for the `wasm64-unknown-unknown` target.][80525]
- [Improved debuginfo for closures and async functions on Windows MSVC.][83941]
Libraries
-----------------------
- [Abort messages will now forward to `android_set_abort_message` on
Android platforms when available.][81469]
- [`slice::IterMut<'_, T>` now implements `AsRef<[T]>`][82771]
- [Arrays of any length now implement `IntoIterator`.][84147]
Currently calling `.into_iter()` as a method on an array will
return `impl Iterator<Item=&T>`, but this may change in a
future edition to change `Item` to `T`. Calling `IntoIterator::into_iter`
directly on arrays will provide `impl Iterator<Item=T>` as expected.
- [`leading_zeros`, and `trailing_zeros` are now available on all
`NonZero` integer types.][84082]
- [`{f32, f64}::from_str` now parse and print special values
(`NaN`, `-0`) according to IEEE RFC 754.][78618]
- [You can now index into slices using `(Bound<usize>, Bound<usize>)`.][77704]
- [Add the `BITS` associated constant to all numeric types.][82565]
Stabilised APIs
---------------
- [`AtomicBool::fetch_update`]
- [`AtomicPtr::fetch_update`]
- [`BTreeMap::retain`]
- [`BTreeSet::retain`]
- [`BufReader::seek_relative`]
- [`DebugStruct::non_exhaustive`]
- [`Duration::MAX`]
- [`Duration::ZERO`]
- [`Duration::is_zero`]
- [`Duration::saturating_add`]
- [`Duration::saturating_mul`]
- [`Duration::saturating_sub`]
- [`ErrorKind::Unsupported`]
- [`Option::insert`]
- [`Ordering::is_eq`]
- [`Ordering::is_ge`]
- [`Ordering::is_gt`]
- [`Ordering::is_le`]
- [`Ordering::is_lt`]
- [`Ordering::is_ne`]
- [`OsStr::is_ascii`]
- [`OsStr::make_ascii_lowercase`]
- [`OsStr::make_ascii_uppercase`]
- [`OsStr::to_ascii_lowercase`]
- [`OsStr::to_ascii_uppercase`]
- [`Peekable::peek_mut`]
- [`Rc::decrement_strong_count`]
- [`Rc::increment_strong_count`]
- [`Vec::extend_from_within`]
- [`array::from_mut`]
- [`array::from_ref`]
- [`cmp::max_by_key`]
- [`cmp::max_by`]
- [`cmp::min_by_key`]
- [`cmp::min_by`]
- [`f32::is_subnormal`]
- [`f64::is_subnormal`]
Cargo
-----------------------
- [Cargo now supports git repositories where the default `HEAD` branch is not
"master".][cargo/9392] This also includes a switch to the version 3 `Cargo.lock` format
which can handle default branches correctly.
- [macOS targets now default to `unpacked` split-debuginfo.][cargo/9298]
- [The `authors` field is no longer included in `Cargo.toml` for new
projects.][cargo/9282]
Rustdoc
-----------------------
- [Added the `rustdoc::bare_urls` lint that warns when you have URLs
without hyperlinks.][81764]
Compatibility Notes
-------------------
- [Implement token-based handling of attributes during expansion][82608]
- [`Ipv4::from_str` will now reject octal format IP addresses in addition
to rejecting hexadecimal IP addresses.][83652] The octal format can lead
to confusion and potential security vulnerabilities and [is no
longer recommended][ietf6943].
- [The added `BITS` constant may conflict with external definitions.][85667]
In particular, this was known to be a problem in the `lexical-core` crate,
but they have published fixes for semantic versions 0.4 through 0.7. To
update this dependency alone, use `cargo update -p lexical-core`.
- Incremental compilation remains off by default, unless one uses the
`RUSTC_FORCE_INCREMENTAL=1` environment variable added in 1.52.1.
Internal Only
-------------
These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc and
related tools.
- [Rework the `std::sys::windows::alloc` implementation.][83065]
- [rustdoc: Don't enter an infer_ctxt in get_blanket_impls for impls that aren't blanket impls.][82864]
- [rustdoc: Only look at blanket impls in `get_blanket_impls`][83681]
- [Rework rustdoc const type][82873]
8.9.0
-----
* New functions
* :func:`interleave_evenly` (thanks to mbugert)
* :func:`repeat_each` (thanks to FinalSh4re)
* :func:`chunked_even` (thanks to valtron)
* :func:`map_if` (thanks to sassbalint)
* :func:`zip_broadcast` (thanks to kalekundert)
* Changes to existing functions
* The type stub for :func:`chunked` was improved (thanks to PhilMacKay)
* The type stubs for :func:`zip_equal` and `zip_offset` were improved (thanks to maffoo)
* Building Sphinx docs locally was improved (thanks to MarcinKonowalczyk)
Version 1.6.2
-------------
No functionality changes with respect to 1.6.1
* Added `python_requires>=3.5` to `setup.py`
* Formatted the codebase with `black`
* Added type annotations
* Added CI checks for typing, security and linting