Offer explicit byte and node budgets for WSON parsing and serialization

Abierto
#1,030 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
rust
Área
compilers

Línea de trabajo

Start with utils/src/wson/mod.rs:20 and inspect the public parse/write APIs plus existing depth guards. Before implementation, agree the caller-selectable byte, node, and output-budget semantics with @LunaStev, including structured errors and compatibility requirements. Done means budgeted APIs reject excess shallow input/output while within-budget JSON/WSON values and numeric/Unicode behavior remain compatible and existing limits stay enforced.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

discussion enhancement help wanted

Motivation

WSON already bounds nesting (and allows an explicit serialization depth limit), but the inspected public APIs have no total input/output-byte or value-node budget. Shallow large arrays/strings remain outside the depth guard. This is an opt-in resource-control proposal, not a discovered Rust vulnerability.

Starting point: utils/src/wson/mod.rs:20.

Validation

Audited canonical Wave 540728c2eb6cc12f5c69c3fb3fdb96e07ba059a4 (0.0.1-alpha-dev), whose tree matches the local checkout. Validation: Inspected all public WSON parse/write APIs and existing depth guards. Executed compiler probes use the matching checkout-built compiler and std on Linux amd64 (Rust 1.89.0 / LLVM 21.1.8). Source/header or mocked checks are not native execution on another OS.

Scope

Agree caller-selectable byte/node/output budgets that can be used by metadata/diagnostic clients without silently changing existing format or default depth contracts.

Related: #835, #836, #540. These links do not claim those broader or completed scopes are unfinished.

Design discussion required

This issue records a proposal or an unresolved contract; it is not approval to choose new semantics. Please mention @LunaStev to discuss the design before starting implementation.

Completion criteria

  • Budgeted APIs reject excess shallow input/output with ordinary structured errors.
  • Within-budget JSON/WSON values and exact numeric/Unicode behavior stay compatible.
  • Existing depth limits and AST dump-specific limits remain enforced.
Lenguaje dominante
Rust
Estrellas
56
Forks
21
Merge medio
23 h 20 min
PR fusionados (30 d)
45

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de wavefnd/Wave

Todos los issues de wavefnd/Wave

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.