⬆️ Update dependency fastyaml-rs to v0.7.0 - #452
Merged
Merged
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
frenck
approved these changes
Oct 3, 2026
renovate
Bot
force-pushed
the
renovate/fastyaml-rs-0.x
branch
from
October 3, 2026 08:52
caae9cf to
8844148
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==0.6.6→==0.7.0Release Notes
bug-ops/fast-yaml (fastyaml-rs)
v0.7.0Compare Source
Breaking Changes
Core
Valueis a resolved enum with aSetvariant; saphyr leaves the public API (ScalarOwned,Map,Array,canonicalize,scalar_key_text,LimitGuard,MergeKeyValidator,ParseError::scannerremoved), the emitter is iterative and event-driven, andsaphyris dropped as a dependency (#412) (#400) (#542) (#546) (#561) (#562) (#582)MappingandSetequality and hashing ignore entry order;Valuehashes are keyed per process and must not be persisted (#551) (#582)ParseErrorreshaped:ScannerbecomesSyntax(SyntaxError),Merge/LimitExceeded/SetValue/Keycarryat: SourcePositionand a 0-basedDocumentIndex,From<MergeError>andFrom<ScanError>removed,relocatedtakes a document count (#412) (#504) (#517) (#530) (#548) (#554) (#555) (#556) (#561) (#564) (#620) (#637)ParseLimitsgainsmax_scan_aheadandmax_documents,LimitKindgainsScanAhead,DocumentsandFlowNesting,MaxDepth::new/MaxAliasBytes::newreturnResult<_, LimitRangeError>,has_comments*/find_commentstakeMaxScanAhead(#433) (#563) (#574) (#582) (#595)EmitterConfig:indent/widthareIndent(1..=9) andWidth(20..=1000) newtypes,compactis removed,max_depthbecomes emit-onlymax_emit_depth(default 512),streaming::MAX_DEPTHis removed (#382) (#427) (#546) (#561) (#563) (#582)EmitErrorchanges:Emit(String)replaced byFormat/Parse,UnsupportedTypebecomesComplexFlowKey,SetAsKey,DepthLimitExceededandAnchorLimitExceededadded;ParseError,EmitError,Severityand other error enums are#[non_exhaustive](#371) (#383) (#411) (#412) (#561)<<(or a!!mergescalar) is a merge key, an invalid<<value, repeated<<or!!setmember with a value is an error with its position, andMergeTargetrequiresreject(#478) (#481) (#491) (#492) (#494) (#504) (#511) (#554) (#555) (#561) (#564)DecimalBigIntreplaced by radix-awareBigInt/IntRadix(BigIntRefborrowed), hex and octal integers beyondi64load as exact big integers (#412) (#495) (#521) (#561)reject_nulbecomesNormalizedInput,parse_chunk_with_budgetbecomesparse_normalized, a prefix BOM is no longer content,formatkeeps a leading BOM,DecodeError::UnsupportedEncodingis a struct variant, andEventItemgainsend(#333) (#451) (#457) (#525) (#526) (#561) (#576)eventsmodule (EventStream,Event,ScalarStyle,Tag) replaces the saphyr-based API;resolve_scalar/core_tag_suffixtake them (#542) (#562)streamingfeature is removed; the streaming formatter is the onlyEmitter::format*path (#408)Linter
Locationfields are private (line(),column(),offset()), line and column use the newOneBasedtype, andLocation::try_newrejects 0 (#621) (#637)SourceRule::check/DocumentRule::checkreturnVec<Finding>, withdiagnosefor tests; the linter adds code and severity, andflow_commonhelpers no longer take them (#625) (#637)LintRuleis metadata-only withid() -> RuleId; rules implementSourceRuleorDocumentRule,add_rulerejects duplicate ids,Linter::lint_valueand theLintContextdoc-start API are removed, andsyntax/diagnostic-limitare reserved codes (#603) (#609) (#623) (#576)Diagnostic.contextbecomesexcerpt: Excerpt,Formatter::formatbecomeswrite(&mut dyn io::Write, Findings),KeyIndexandDiagnosticBuilder::build_with_contextare removed,comment_parserreplaced byComment/CommentKind, thetokenizermodule is private (#563) (#576) (#605)RuleConfig/RuleOption/RuleOptionswithRulesConfig;SeverityisFromStr/DeserializeandConfigFileSeverityis removed (#324) (#327) (#426)extends,ignore,yaml-files,locale, per-ruleignore/ignore-from-fileandmax-scan-aheadare accepted,into_lint_configbecomesinto_parts,warn_unknown_rulesbecomesunknown_rules,RuleSettingsgainsignore/origin,LintConfiggainsparse_limits/max_input_bytes, andConfigFileErrorgainsExtended,ExtendsCycle,ExtendsTooDeep,NotRegularFile,TooLarge,UnsupportedLocale,DecodeandLimitNotPositive/LimitOutOfRange(#411) (#436) (#510) (#524) (#538) (#563) (#571) (#582) (#595) (#605)error), soline-length: {max: 60}now exits 2;rules: {x: enable}resets options;undefined-aliasis an unknown rule;level:aliasesseverity(#426) (#576) (#605)IndentationOptionsis a port of yamllint'sindentation(spacesreplacesindent_size,indent-sequences,check-multi-line-strings; default widthconsistent) (#605) (#626) (#637)quoted-stringsfollows yamllint: regexextra-required/extra-allowed(PatternList), skips keys and!!-tagged scalars,only-when-neededuses YAML 1.1 resolvers (#426) (#538) (#576) (#605)truthydropsy/n,line-lengthlets a one-word line through,document-start/document-endcheck every document withMarkerPresence(present: falseforbids...),key-orderingandempty-valuesfollow yamllint (#538) (#576) (#605)duplicate-keycompares resolved values (99/+99collide) and gainsforbid-duplicated-merge-keys(on by default) (#576)SarifFormatteris replaced by typedReportFormat::Sarif(SARIF 2.1.0, absolutefile:URIs) (#314) (#570)ContextLinegainscolumn_offset/truncated_end; context lines are windowed to 120 characters (#454) (#468)Spanrefers to BOM-free text; map an offset back withNormalizedInput::original_offset(#576)!!setmember with a value is aset-valuesdiagnostic (exit 2) instead of a parse error;LoadOptionsgainsset_values(#565) (#570)Parallel
Config::with_workerstakesWorkers(Auto,Sequential,Fixed(WorkerCount)),shared_poolandScanAheadLane::for_policytakeWorkerCount(1..=128) (#610) (#622)Errorreshaped:Utf8becomesDecode { path, source },InputTooLargeis a tuple variant,DocumentLimitExceeded/TooManyDocumentsare replaced by coreLimitKind::Documents,Chunking/Configremoved,ThreadPoolwraps the Rayon error,FormatcarriespathandEmitError,EmptyDocumentadded (#334) (#411) (#508) (#509) (#524) (#530) (#537) (#574) (#595)mmap_threshold,SmartReader,FileContentandChunk.indexare removed and the crate forbidsunsafe(#531) (#552) (#595)format_files/format_in_placetake aCommentPolicy,format_filesreturnsFormatOutput { formatted, changed },Error::CommentsWouldBeStrippedadded (#397)Configgainswith_key_domainandwith_max_input_bytes(replacingwith_max_input_size) (#508) (#537) (#548) (#564)---as content, changing the document count (#552) (#562)CLI
ExitCode::ParseErroris renamedFailure; unusedIoError(3) andInvalidArgs(4) are removed; exit codes 0, 1, 2 and 5 are unchanged (#628) (#637)-f/--formatis removed,-o/-iexist only on subcommands that write,-jabove 128 is rejected,--quietwith--verboseexits 2 anywhere,--max-line-lengthaccepts1..=4294967295,--indentaccepts 1..=9 and out-of-range values fail instead of being clamped (#330) (#382) (#534) (#610) (#611) (#622) (#634) (#637)using config file: <path>is printed only with-v(#614) (#622)--max-input-bytes, alias--max-input-size),fy lintrejects input above 1 GiB (#342) (#436) (#508) (#510) (#534) (#537)fy format --dry-runexits 5 when any file would change;fy format <dir|glob>without-ior--dry-runandfy -iwithout a subcommand exit 1 (#397) (#401)f[12].yamlare literal;--include/--excludematch case-insensitively (#401) (#402) (#496) (#497) (#498) (#512) (#513) (#514) (#523)fy parse,lintandconvertexit 1 on an invalid<<value (#481) (#494)DiscoveryConfig.include_patternsbecomesinclude: IncludePatterns;fy lintexits 0 when configignoredrops every input (#538)fy lint --format jsonprints a one-elementsyntaxarray for a missing, unreadable or invalid input (#605).5,-.5and+.infload as floats, NUL input is a parse error,inf/NaNstay strings informat, and floats are written as YAML 1.1 readers expect (1.0e+300,-0.5) (#362) (#390) (#393) (#417) (#450) (#458) (#549) (#564)NumbertoString (#567) (#595)fy linton a!!setmember with a value exits 2 with aset-valuesdiagnostic (#565) (#570)fy lintvisits.yamllintby default andfy formatdoes not (#571) (#595)Python
Location(line, column, offset)raisesValueErrorfor line or column 0 (#621) (#637)LintConfig()leaves indentationconsistentandLintConfig.indent_sizeisNonewhile consistent (#626) (#637)safe_load/parse_parallelraiseValueErrorfor keys YAML keeps distinct but a dict would merge (1,true,1.0), raise on a!!setmember with a value, and count canonical decimal digits against the int digit limit (#489) (#511) (#521) (#541) (#555) (#564)parse_parallelloads!!setassetand hex and octal integers likesafe_load; dumping asetwrites!!set(#490) (#521) (#537)max_input_sizebecomesmax_input_bytes(TypeErroron the old name);max_line_lengthhas no 1000 cap;linttakes an optionalpathfor per-ruleignore(#426) (#508) (#537) (#605)_core.dump/dump_allare removed;saphyr-parseris no longer a dependency (#542) (#562) (#612) (#622)cp310-abi3) (#472)Node.js
maxChunkSizeis removed,maxDocumentsis enforced (default 100000),maxInputSizebecomesmaxInputBytes(throws on the old name) (#435) (#508) (#530) (#537)maxLineLengthandindentSize) reject negative, fractional,NaNand out-of-range values withInvalidArg(#434) (#628) (#637)processFiles,formatFiles,formatFilesInPlaceandsafeDump/safeDumpAllthrow instead of returning errors (#395) (#433) (#434)LintConfig.rulesis read under depth and node limits and rejectsBigInt(#423) (#434)Cross-surface
rulespatch on every surface;rulesaccepts every rule option; out-of-range sizes and indents are errors (#327) (#426) (#601) (#622)fy format,format_filesand the batch formatters share one formatter: explicit tags preserved,nullinstead of~,---and duplicate keys kept (#408)MaxOutputBytes,MaxDumpNodes,DumpBudget) (#395)multiline_stringsliteral blocks at any indent, U+0085/U+2028/U+2029 double-quoted (#546) (#560) (#582)max_scan_ahead(#563) (#582)<<is an error (#391) (#465) (#475) (#554) (#564)(document N)from the second document on (#517) (#530)safe_load/load/parse_parallel/Node.js loaders reject streams over 100000 documents (--max-documents) (#529) (#537) (#574) (#595)format_files_in_placereport untouched files asUnchanged(#397)Added
DocumentIndex,SourcePosition::new,ParseError::reasonandParseError::position(#314) (#412) (#570) (#621) (#637)eventsmodule,LoadOptionskey domains (Yaml,StringKeys,Python) andSetValuespolicy,NodeRole,MaxDocuments, publicmerge::is_merge_key_scalar/is_set_tag(#508) (#518) (#537) (#542) (#548) (#554) (#562) (#564) (#565) (#570)NormalizedInput,Emitter::format_normalized,CommentScanner,Parser::parse_normalized_observed/validate_normalized_observed,fs::read_regular_file,decode_inputwith UTF-16/UTF-32 BOM detection (#334) (#412) (#524) (#576) (#605) (#609) (#623)StreamBudget,MaxOutputBytes,MaxDumpNodes,MaxTagBytesandfind_comments;Floatkeeps JSON number spelling (1.0e+5) (#369) (#389) (#395) (#405) (#412) (#437) (#561)max_depth/max_alias_bytesoptions and--max-depth/--max-alias-bytesonfy parse/convert/lint,fy format --max-depth(#427) (#433) (#561)set-valuesrule,quoted-stringsquote-type: consistent,allow-quoted-quotes,check-keys,extra-required/extra-allowedregexes,line-lengthallow-non-breakable-words/-inline-mappings,document-end: {present: false},key-orderingignored-keys,invalid-anchoroptions (#538) (#570) (#572) (#576) (#602) (#637)extends: default|relaxedandignore-from-file, per-ruleignore,locale, yamllint rule-name aliases,indentationspaces/indent-sequences/check-multi-line-strings(#538) (#571) (#595) (#605)# fy: disable|enable|disable-line|disable-file(and# yamllint ...) with alint-directivediagnostic (#437)Finding,OneBased,Location::try_new,Findings,LintSource,Linter::lint_file/lint_source_file,RulesConfig::apply_at/apply_rule_atandLintConfig::matching_path(#605) (#619) (#621) (#622) (#625) (#637)max_input_bytes/maxInputByteslint option (1 B to 1 GiB, default 100 MiB) withLintError::InputTooLarge(#436) (#510)fy lint --format github|sarif|parsable,--stdin-files,--max-diagnostics Nandmax-diagnostics/max-input-bytesconfig keys (#314) (#508) (#537) (#570) (#576) (#603) (#623)--max-input-bytes(1 B to 1 GiB,KiB/MiB/GiBsuffixes) and-o /dev/nullto discard output (#342) (#534) (#634) (#637)RUST_LOGenablestracingdebug events;fast-yaml-parallelgains an optionaltracingfeature (#614) (#622)shared_pool,read_file,AtomicFile,ScanAheadPolicy(#366) (#531) (#532) (#577) (#595)safeDumpwritesSetas!!setandMapas a mapping, including cross-realm and subclasses (#541) (#547) (#566) (#564)BatchConfig(max_depth=),formatFiles({ maxDepth }),parse_limitsoptions (#427) (#433)cargo-fuzztargets, format round-trip proptests,test-core-no-arenajob, actionlint/zizmor and a fuzz workflow on push tomain,FY_BINparity jobs, nextest hang timeout (#418) (#422) (#432) (#524) (#561) (#570) (#597) (#635)Changed
FlowIndex, cuttingfy lintmemory on long flow lines from 3.5x to about 1.1-1.25x offy parseand roughly 2x on diagnostic-heavy input via lazy excerpts and streamed reports (#573) (#576) (#578) (#579) (#595) (#605)Linter::lintfinds comments in the loader pass; flow-heavy lint is within noise of baseline (#576) (#600) (#605) (#623)fy lintbuilds no value tree unless a customDocumentRuleis enabled (#609) (#623)extendserror texts name the file without quoting its content (#571) (#595)NormalizedInputscan and no per-float allocation (#558) (#562)fy lintbatch streams results through a bounded window in file order; batch runs scale the default scan-ahead limit per worker and retry at the full limit (#576) (#577) (#595)ConfigSource,ResolvedCli,Verbosity,Cursor,BatchStats),fybuilds without default features and dropsnum_cpus,is-terminaland unused dead code (#323) (#330) (#401) (#411) (#612) (#613) (#622)1 fileinstead of1 files(#401)Workers::Autois capped at 128 threads and honorsRAYON_NUM_THREADS(#610) (#622)sys.get_int_max_str_digits()) on load and dump (#488) (#510)docs/CI-CD-QUICKSTART.mdandMakefile.toml; CI notes moved toCONTRIBUTING.md(#596)ordered-float5.5 and Rust minor/patch updates (#294) (#299) (#300) (#304) (#305) (#399)napi3.14,napi-build2.6, Rust lockfile refresh, Node.js dev tooling (@biomejs/biome,@napi-rs/cli,@types/node) (#645)Fixed
Core
fy formatoutput stays parseable and faithful: directives of later documents and reserved%NAMEkept,%TAGprefix starting with#kept,...markers, anchors (including after non-ASCII directives and&inside scalars), explicit tags,|+keep-chomp,?explicit keys, block scalar indent indicators, folded scalars, empty flow collections and non-default--indent(#354) (#367) (#377) (#380) (#383) (#409) (#429) (#430) (#431) (#441) (#447) (#449) (#450) (#580) (#595) (#605) (#636)<<and raw keys, alias keys over the implicit-key limit, empty root block scalar (#379) (#384) (#412) (#458) (#460) (#484) (#486) (#487)fy formatrejects recursive aliases and cross-document aliases and errors instead of dropping anchors or nesting past limits (#371) (#383) (#389) (#412)Emitter::emit_strno longer panics on big-integer scalars or emitstag:yaml.org,2002:!int;!!settags have no trailing space (#483) (#485) (#490) (#537)!!int/!!bool/!!floaton quoted scalars and empty values,-0x8000000000000000asi64::MIN, equal big-integer spellings collapse to one key (#390) (#394) (#464) (#477) (#480) (#495) (#561)FlowNestingerror (#522) (#530) (#556) (#564)fy formator loses directives (#331) (#451) (#455) (#561)%directive at EOF no longer hangs the parser, bindings or CLI (#403) (#415)__proto__keys,U+0085and Unicode whitespace key starts, non-2 indent block output and complex keys load and dump correctly; Pythonsafe_dump(sort_keys=True)sorts set members (#412) (#561)format_filesin Python, Node.js andfast-yaml-parallel(#408)Linter
{}/[](#307) (#347) (#350) (#385) (#416) (#440)key-ordering, flow tokens,comments-indentationand long lines is fixed (#385) (#439) (#443) (#444) (#453) (#467) (#468) (#473)commas,braces,brackets,colonsandhyphensmatch yamllint on flow collections, plain scalars, empty collections, continuation lines, anchors, tags and trailing comments (#345) (#388) (#442) (#445) (#446) (#452) (#575) (#615) (#616) (#617) (#620) (#630) (#631) (#637) (#440)float-values,quoted-strings,truthyandempty-valuesuse the core scalar resolver and parser positions, so.5e,+.inf,"1"and empty values are classified correctly and keys are located at their own line (#353) (#393) (#458) (#461) (#473) (#474) (#482)document-startno longer reports a missing---after directives;truthyrespects%YAML 1.2;comments,comments-indentationandline-lengthfollow yamllint (#443) (#572) (#575) (#576) (#606) (#618) (#623)duplicate-keydetects repeats through aliases and merge keys;indent-sizein a later config layer replaces earlierspaces;braces/bracketshonormin-spaces-inside-emptyalone;document-start: {present: true}andquote-typetypos are no longer ignored (#324) (#426) (#565) (#570) (#626) (#637)CLI
fy format:--dry-runcompares with the input, never writes and works on stdin;-iskips already formatted files; batch mode refuses files with comments unless--strip-comments, with parser-based comment detection; BOM is kept (#333) (#348) (#397) (#561)fy linthonors-o, reports missing paths in report formats, prints each error once, checks size before reading, refuses to overwrite an input (alsoformat -o/convert -o) and stays silent on a closed pipe (#509) (#519) (#537) (#569) (#575) (#595) (#604) (#623)fy convertkeeps key order and integers beyondi64exact in both directions ([#&Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.