Commit graph

421 commits

Author SHA1 Message Date
David Aguilar
f34c6869f1 yaml-rust2 v0.8.0 2024-03-25 22:18:38 -07:00
David Aguilar
67ec4899c0 CHANGELOG: mention the linguist development-related updates 2024-03-25 22:18:37 -07:00
David Aguilar
3f128e806c garden: access yaml-rust2 pull requests as yaml-rust2/pull/* 2024-03-25 22:18:37 -07:00
David Aguilar
728bd8b391 garden: update urls and remove old forks and links
We have the commits in git now.
2024-03-25 22:18:37 -07:00
Spenser Black
c7689fb84b Add linguist attributes for tests/*.rs.inc files
This informs Linguist (used by GitHub) that these files are Rust (they
are currently detected as C++). This also marks them as generated.
2024-03-25 20:11:04 +01:00
John Vandenberg
6ec65e636f fix typos 2024-03-25 14:52:44 +01:00
David Aguilar
697550e112 README: update the installation snippet to use yaml-rust2 0.7 2024-03-24 17:00:57 -07:00
David Aguilar
77bf4eaeef README: add self-links to make things more discoverable
If someone lands on one of our forks on github there are still UI elements
that point them back to the original chyh1990 yaml-rust project.

Add links to make it easier to navigate back to the main fork when
viewing a yaml-rust2 fork.
2024-03-24 17:00:19 -07:00
David Aguilar
d7f7c7ce15 yaml: add YamlLoader::load_from_parser(&Parser)
Make it easier to load documents from a prebuilt Parser.
2024-03-25 00:06:10 +01:00
David Aguilar
c00b27bb95 parser: add Parser::new_from_str(&str) 2024-03-25 00:06:10 +01:00
David Aguilar
61b0e70a4e parser: fixup typos from github 2024-03-24 15:01:38 -07:00
David Aguilar
86f008196c CHANGELOG: simplify the formatting and document YamlLoader::documents() 2024-03-24 14:45:52 -07:00
David Aguilar
06708ee787 CHANGELOG: document the keep_tags API addition 2024-03-24 14:27:04 -07:00
David Aguilar
c8e82c00d1 parser: add a test for keep_tags(false)
Co-authored-by: Ethiraric <ethiraric@gmail.com>
2024-03-24 14:21:33 -07:00
David Aguilar
dec6bf35bb parser: better document keep_tags
Co-authored-by: Ethiraric <ethiraric@gmail.com>
2024-03-24 14:21:33 -07:00
David Aguilar
150b6f0927 parser: add an option to keep tags across multiple documents
Documents are self-contained and tags defined in the first document are not
visible to subsequent documents.

Add support for having tags that span across all documents by making the
clearing of tags in the parser opt-out.

Closes: #10
2024-03-24 14:21:33 -07:00
David Aguilar
16f3ea39e1 yaml: add YamlLoader::documents() to get a read-only view of the parsed documents 2024-03-24 14:21:33 -07:00
Ethiraric
ee92e953f1 Switch from encoding to encoding_rs.
See https://github.com/rustsec/advisory-db/issues/1605.
2024-03-24 17:14:44 +01:00
Gregor Purdy
c5c9f4af16 Typo fix 4 in 2024-03-15-FirstRelease.md 2024-03-21 14:22:39 +01:00
Gregor Purdy
6e9351f84b Typo fix 3 in 2024-03-15-FirstRelease.md 2024-03-21 14:22:14 +01:00
Gregor Purdy
a4ce3e9696 Typo fix 2 in 2024-03-15-FirstRelease.md 2024-03-21 14:22:00 +01:00
Gregor Purdy
f5cb266a43 Typo fix 2024-03-21 14:21:26 +01:00
Ethiraric
580d7b0525 Remove no longer needed test files.
These tests were sucecssfully converted to Rust files to include and are
no longer necessary in this repository.
Should they become relevant again in the future, they can always be
checked out from a previous commit.
2024-03-21 12:37:10 +01:00
Ethiraric
2fe52cf1c2 Run CI only on master pushes. 2024-03-21 12:33:00 +01:00
Ethiraric
0f97d2b9e4 Make gen_large_yaml reproductible.
* Use a seedable RNG so that we can have the same number sequence.
* Replace `HashMap`s with `Vec`s to avoid undeterministic iteration.
2024-03-20 23:07:08 +01:00
Ethiraric
60bf9c80ba Edit v0.6 post with cargo alias. 2024-03-20 21:39:38 +01:00
Ethiraric
3279baaab9 Fix rustdoc ignore directive. 2024-03-20 16:00:33 +01:00
Ethiraric
ccd7b6e718 Add missing_docs warning. 2024-03-20 16:00:30 +01:00
Ethiraric
8247f481c7 Forgot to bump some v0.6.0 to v0.7.0. 2024-03-20 16:00:15 +01:00
Ethiraric
a87922680c Update cargo version to 0.7. 2024-03-20 14:42:31 +01:00
David Aguilar
d9a3d49468 CHANGELOG: move recent updates to v0.7.0 and add a v0.6.0 section 2024-03-20 14:21:27 +01:00
David Aguilar
71003055a7 README: add an "Upgrading from yaml-rust" section 2024-03-20 14:21:27 +01:00
Ethiraric
f497d2c49f Add serde-yaml to benchmark.
This internally uses `libfyaml`, so this is more of a benchmark of
libfyaml in the end.
2024-03-19 19:29:25 +01:00
Ethiraric
011e81ee85 Re-enable clippy warnings. 2024-03-19 18:18:59 +01:00
David Aguilar
cccf769b1c Enable all clippy warnings
Rename Scanner::next() to Scanner::next_token() to avoid
confusiong with the Iterator trait.
2024-03-19 15:26:16 +01:00
David Aguilar
a120d93e7d Enable the missing-errors-doc clippy checks 2024-03-19 15:26:16 +01:00
David Aguilar
9e505d552f Eliminate panics and enable the missing panics docs check 2024-03-19 15:26:16 +01:00
David Aguilar
a42f26b306 Enable the redundant-else clippy checks 2024-03-19 15:26:16 +01:00
David Aguilar
b2bed366cf Add a CHANGELOG to keep track of yaml-rust2 development 2024-03-19 15:26:16 +01:00
David Aguilar
49464b43d9 README: trivial grammar tweak 2024-03-19 15:26:16 +01:00
David Aguilar
aa1afd38d5 Add a garden file for dev tasks
Garden is a simple command runner that uses YAML (via yaml-rust) as its
file format. Garden will be switching over to yaml-rust2 shortly.
2024-03-19 15:26:16 +01:00
Ben Boeckel
8110c942ec doc: mention that types are not interpreted
Closes: #87
2024-03-19 15:26:16 +01:00
David Aguilar
e36369d69c Enable the case-arms clippy checks 2024-03-19 15:26:16 +01:00
lincoln auster [they/them]
7b4422bb5d implement borrowed_or
Allow the usage of `or` without consuming self. This can be useful
for pipelines that maintain some sort of owned state.
2024-03-19 15:26:16 +01:00
lincoln auster [they/them]
f8542f0f97 introduce or function
Similarly to `or` for Rust's options, this patch provides a way to
'override' the value of a Yaml node if it's some form of error.
2024-03-19 15:26:16 +01:00
David Aguilar
9764f399fb Update to quickcheck 1.0 2024-03-19 15:26:16 +01:00
Marko Mikulicic
c32db2986c Use a YamlDecoder builder to implement optional encoding_trap parameter. 2024-03-19 15:26:16 +01:00
Marko Mikulicic
5240918cac Implement load_from_bytes
Also helps in some cases with #142, when the BOM is at the beginning of
the file (common), but not in corner case where the BOM is at the start
of a document which is not the first one.

Closes: #155
2024-03-19 15:26:16 +01:00
Jim Turner
03e3047937 Add byte a offset to the error message 2024-03-19 15:26:16 +01:00
larkbyte
54ca9294fa Replace linked_hash_map with hashlink 2024-03-19 15:26:16 +01:00
David Aguilar
5951a33317 ci: replace travis with github actions 2024-03-19 15:26:16 +01:00
David Aguilar
77574b4f30 Cargo.toml: enable the Rust 2021 Edition 2024-03-19 15:26:16 +01:00
David Aguilar
5c9350e824 Cargo.toml: add myself to the authors list 2024-03-19 15:26:16 +01:00
David Aguilar
5369a002ba Emit multi-line string values as block scalars 2024-03-19 15:26:16 +01:00
Ethiraric
a33d0ffe68 Update to v0.6. 2024-03-15 20:14:26 +01:00
Ethiraric
f99a81c3e6 Add bench_compare tool. 2024-03-15 18:29:54 +01:00
Ethiraric
289d16ab4a Prepare for benchmarks. 2024-03-15 17:34:39 +01:00
Ethiraric
98374de883 Create a deeper YAML in nested.yaml.
This requires heavily reducing the number of nodes since they are on
average more indented. Leaving 5M nodes results in files larger than
1GB.
2024-03-15 12:48:04 +01:00
Ethiraric
704d30c7a6 Add gen_large_yaml to justfile's before_commit. 2024-03-15 12:42:10 +01:00
Ethiraric
e390c88077 Remove tools from examples.
Add documentation for those tools, and make it so that `gen_large_yaml`
generates a predetermined set of files instead of outputting to its
standard output.
2024-03-14 19:20:56 +01:00
Ethiraric
6919d6fd02 Add a generator for nested objects. 2024-02-14 00:35:41 +01:00
Ethiraric
e7a4f30627 Replace VecDeque with ArrayDeque.
This removes all allocations in the `Scanner` code. The downside is that
the buffer is now stored in the `Scanner` structure, making it 48 bytes
larger. This however makes the code much more performant.
2024-02-13 23:10:32 +01:00
Ethiraric
603c3c546f Fix some clippy lints. 2024-02-13 23:10:17 +01:00
Ethiraric
96b012a021 Improve comments. 2024-02-08 07:04:38 +01:00
Ethiraric
e93947bcfe Minor improvements. 2024-01-31 22:02:53 +01:00
Ethiraric
a1285f107a Add big string array bench generation. 2024-01-30 23:11:00 +01:00
Ethiraric
b3dd1af018 Rename generator tool. 2024-01-30 22:37:32 +01:00
Ethiraric
4fee65f27a Improve scan_plain_scalar readability.
Take whitespace checking out of the innermost loop for performance.
2024-01-25 03:06:18 +01:00
Ethiraric
28893c4567 Avoid a trip to self.buffer.
`self.buffer` is a `VecDeque<char>`, meaning that characters are stored
on 4B. When reading as we used to do, this means that every 1 byte
character we read was turned into 4 bytes, which was turned into 1 byte
in `String::extend`.

Instead of going through `self.buffer`, use a local `String` to store
the characters before pushing them to `string`.
2024-01-24 23:02:02 +01:00
Ethiraric
2471c5793a Buffer block scalar lines.
Instead of doing a loop that goes:
  * fetch from input stream
  * push char into string

Make a loop that fetches characters while they're not a breakz and
_then_ extend the string. This avoids a bunch of reallocations.
2024-01-24 21:45:18 +01:00
Ethiraric
7a51c3dfca Split skip into more specific variants.
This function is a hotpath and sometimes removing the conditional jump
to detect line breaks saves a bunch of instructions.
2024-01-24 20:20:52 +01:00
Ethiraric
666965ef4f Doing this leads to worse performance. 2024-01-24 19:42:18 +01:00
Ethiraric
4153a98973 Pre-load chars in skip_block_scalar_indent. 2024-01-24 19:31:45 +01:00
Ethiraric
980d5b0335 Help the compiler inline read_break. 2024-01-24 17:14:52 +01:00
Ethiraric
bcdd725049 Remove debug prints code from release builds.
If building release mode, remove debug code. Now, the `debug_print!`
macro resolves to nothing in release build.

In debug build, don't check the environment for each print. This has a
huge overhead. The environment is only checked once and next checks are
made against a simple boolean value.
2024-01-24 02:22:02 +01:00
Ethiraric
25644ffa93 Add justfile for my pre-commit todo-list. 2024-01-24 01:11:53 +01:00
Ethiraric
06936742f2 Move char is_xxx fn to their own file. 2024-01-24 01:02:20 +01:00
Ethiraric
ed591e86ca Add benchmarking tools. 2024-02-08 08:15:36 +01:00
Ethiraric
ac2d02f65e Use OR for dual licensing.
https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html#adding-metadata-to-a-new-crate
2024-01-23 15:20:12 +01:00
Ethiraric
2481df7f9d Update licence, readme, doc. 2024-02-08 07:12:14 +01:00
Ethiraric
f2d0968a89 Fix null nodes with tags in flow constructs. 2024-01-23 00:19:04 +01:00
Ethiraric
4b37abf2b7 Fix tag scanning. 2024-01-23 00:19:04 +01:00
Ethiraric
84a7d2a0ab Fix indent in block scalars. 2024-01-23 00:19:04 +01:00
Ethiraric
3868b83756 Fix dquote indentation. 2024-01-23 00:19:04 +01:00
Ethiraric
36c4f8951e Fix dquote string escape sequences. 2024-01-23 00:19:04 +01:00
Ethiraric
71c54f318f Fix tests related to anchor/alias indentation.
I have no idea what I'm doing.
2024-01-23 00:19:04 +01:00
Ethiraric
ca7579a3c9 Fix flow adjacent value with complex key. 2024-01-23 00:19:04 +01:00
Ethiraric
a34fcac152 Lint and improve formatting. 2024-01-23 00:19:04 +01:00
Ethiraric
ef799af5eb Fix use of dashes in flow contexts. 2024-01-23 00:19:04 +01:00
Ethiraric
c60099af9b Fix block scalar / eof interactions. 2024-01-23 00:19:04 +01:00
Ethiraric
9b653e607b Fix block scalars and document end interaction. 2024-01-23 00:19:04 +01:00
Ethiraric
308b07bad2 Fix duplicate version directive. 2024-01-23 00:19:04 +01:00
Ethiraric
31dc4a1456 Fixes towards implicit document end. 2024-01-23 00:19:04 +01:00
Ethiraric
7a3e3b05b4 Fixes towards spaces before comments. 2024-01-23 00:19:04 +01:00
Ethiraric
99d82be6a3 Fix possible misindent in block scalar. 2024-01-23 00:19:04 +01:00
Ethiraric
b2aa95b4c1 Fix towards multiple documents in a single stream. 2024-01-23 00:19:04 +01:00
Ethiraric
bff3c4ccaf Fix towards invalid trailing characters. 2024-01-23 00:19:04 +01:00
Ethiraric
032efff867 Split fetch_flow_scalar. 2024-01-23 00:19:04 +01:00
Ethiraric
81104ba833 Fix towards flow mapping and colons. 2024-01-23 00:19:04 +01:00
Ethiraric
4603e31a67 Finally grasped how SimpleKey works.
This is a huge commit that cannot easily be broken down as it contains
fixes for the next ignored test in the suite which, one fixed, broke
tests that used to pass and were only then fixed.

There is also a substantial amount of comments that were added,
especially around `SimpleKey`. Minor improvements around the code were
added and I did not bother making a separate commit for them.

Overall, that commit fixes 7 tests from the matrix that were related to
the handling of simple keys.
2024-01-23 00:19:04 +01:00