lambdaclass / lambdaclass/lambda_compiler_kit

perf/safety: convert parseStr from recursive to iterative to prevent stack overflow

Abierto
#21 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Lean
Estrellas
2
Forks
1
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Problem

parseStr in Lck/Json/Tokenizer.lean is written as a recursive CPS function. While the continuation wrapping is proven zero-cost at runtime (proofs are erased), the recursion itself is structural on the input — meaning for a string literal of length n, the Lean runtime creates n stack frames.

For pathologically large string values this can overflow the stack.

Expected fix

Rewrite parseStr as an iterative (tail-recursive or explicit loop) accumulator, maintaining the same CPS interface for callers. The proof structure can be adapted to use an inductive invariant on the loop state.

References

  • Flagged by AI code review on PR #8

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

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.

Línea de trabajo

Comienza en Lck/Json/Tokenizer.lean, en la implementación CPS recursiva de parseStr, y luego inspecciona cómo dependen los llamadores de su interfaz CPS. Reescribe el análisis de cadenas como un acumulador iterativo conservando esa interfaz, adapta la demostración en torno a un invariante inductivo del bucle y verifica que los literales de cadena grandes ya no corren el riesgo de provocar un desbordamiento de pila.

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

Evaluación

Área
compilers, performance
Tipo de issue
Refactorización
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.