Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Make functions in `numeric.md` total `functional`

Abierto
#317 3 comentarios 0 reacciones 0 asignados Ver en GitHub

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
Refactorización
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
wasm
Área
compilers

Línea de trabajo

Empieza en numeric.md revisando las definiciones de operadores y las funciones auxiliares enumeradas, como #minWidth, #ctz, #popcnt, #round, #signed, #unsigned, #isInfinityOrNan y truncFloat. Después inspecciona sqrtFloat en domains.k y determina si se puede hacer funcional o si los casos no compatibles de sqrt necesitan un tratamiento explícito; se considera terminado cuando los operadores ya no generan condiciones laterales #Ceil.

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

Descripción

Right now there are #Ceil side-condition generated by the backend for the operators defined in numeric.md:

    syntax Val ::= IValType "." IUnOp Int   [klabel(intUnOp)  , function] 
                 | FValType "." FUnOp Float [klabel(floatUnOp), function] 
 // --------------------------------------------------------------------- 
    syntax Val ::= IValType "." IBinOp Int   Int   [klabel(intBinOp)  , function] 
                 | FValType "." FBinOp Float Float [klabel(floatBinOp), function] 
 // ----------------------------------------------------------------------------- 
    syntax Val ::= IValType "." TestOp Int [klabel(intTestOp), function] 
 // -------------------------------------------------------------------- 
    syntax Val ::= IValType "." IRelOp Int   Int   [klabel(intRelOp)  , function] 
                 | FValType "." FRelOp Float Float [klabel(floatRelOp), function] 
 // ----------------------------------------------------------------------------- 
    syntax Val ::= AValType "." CvtOp Number [klabel(numberCvtOp), function] 
 // ------------------------------------------------------------------------ 

I'm pretty sure these all can be made functional, with the appropriate changes to the helper functions they use.

For example:

  • The functions #minWidth, #ctz, #popcnt, #round, #signed, #unsigned, #isInfinityOrNan, and truncFloat need to be made total.
  • rule FTYPE . sqrt => ... needs to either have (i) sqrtFloat be made functional in domains.k, or (ii) explicitely handle the cases that sqrtFloat does not.
Lenguaje dominante
WebAssembly
Estrellas
106
Forks
24
Métricas de merge de PR
Sin PR fusionados en 30 d

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 runtimeverification/wasm-semantics

Todos los issues de runtimeverification/wasm-semantics

Issues similares

Más issues de Compilers

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.