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