C API to create BigDecimal objects
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Comienza con el código de conversión enlazado de Trilogy contrib/ruby/ext/trilogy-ruby/cast.c en las líneas 236-241 y sigue cómo crea actualmente valores BigDecimal. La API solicitada debe aceptar una cadena de bytes y una longitud; se considera terminado cuando los clientes de C puedan crear objetos BigDecimal sin asignar un Ruby String intermedio ni llamar a BigDecimal mediante rb_funcall.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
BigDecimal is used by various database clients, as well as various serialization libraries. Many of those are implemented in C, and for them creating BigDecimal objects is an important bottleneck.
For example, here's the relevant code in the Trilogy MySQL client gem: https://github.com/trilogy-libraries/trilogy/blob/7fcfe8c1c79208c6c56439d1d29c7dc591442c53/contrib/ruby/ext/trilogy-ruby/cast.c#L236-L241
It needs to:
- Allocate a Ruby String and cpy the bytes into it.
- Use
rb_funcallto invokeBigDecimal().
The string allocation isn't too bad, but having to use method dispatch is quite costly.
It would be very useful if there was a set of C APIs to efficiently allocate BigDecimal objects:
VALUE BigDecimal_from_str(const char *, size_t len)`
- Lenguaje dominante
- C
- Estrellas
- 152
- Forks
- 99
- Merge medio
- 12 h 41 min
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ruby/bigdecimal
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
ruby/bigdecimal#566 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
ruby/bigdecimal#491 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
ruby/bigdecimal#444 · 1 comentario ·
-
BigDecimal#whole?Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
ruby/bigdecimal#291 · 6 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
ruby/bigdecimal#268 · 1 comentario · 1 reacción ·
Todos los issues de ruby/bigdecimal
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
FujiNetWIFI/fujinet-firmware#2261 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
kivy/python-for-android#3405 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Nmap
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
area/infrared type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
DarkFlippers/unleashed-firmware#1201 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
pocoproject/poco#5626 ·
Los mantenedores suelen responder en 2 días