|
| 1 | +--- |
| 2 | +layout: news_post |
| 3 | +title: "Publicado Ruby 3.3.0-preview1" |
| 4 | +author: "naruse" |
| 5 | +translator: vtamara |
| 6 | +date: 2023-05-12 00:00:00 +0000 |
| 7 | +lang: es |
| 8 | +--- |
| 9 | + |
| 10 | +{% assign release = site.data.releases | where: "version", "3.3.0-preview1" | first %} |
| 11 | + |
| 12 | +Nos complace anunciar la publicación de Ruby {{ release.version }}. Ruby 3.3 |
| 13 | +añade un nuevo compilador JIT en puro Ruby llamado RJIT, usa Lrama |
| 14 | +como generador del analizador sintáctico así como muchas mejoras |
| 15 | +de desempeño especialmente de YJIT. |
| 16 | + |
| 17 | +## RJIT |
| 18 | + |
| 19 | +* Se introdujo RJIT un compilador JIT en puro Ruby que remplaza a MJIT. |
| 20 | + * RJIT soporta sólo la arquitectura x86\_64 en plataformas Unix. |
| 21 | + * A diferencia de MJIT, no require de un compilador C en tiempo de ejecución. |
| 22 | +* RJIT existe sólo con propósitos experimentales. |
| 23 | + * Debería seguir usando YJIT en producción. |
| 24 | +* Si le interesa desarrollar un compilador JIT para Ruby, por favor |
| 25 | + revise la [presentación de k0kubun en el día 3 de RubyKaigi](https://rubykaigi.org/2023/presentations/k0kubun.html#day3). |
| 26 | + |
| 27 | +## Usa Lrama en lugar de Bison |
| 28 | + |
| 29 | +* Remplaza Bison con [el generador de analizadores sintácticos LALR Lrama](https://github.com/yui-knk/lrama) [Feature #19637] |
| 30 | + * Si tiene interés por favor vea [la visión futura de los analizadores sintácticos de Ruby](https://rubykaigi.org/2023/presentations/spikeolaf.html) |
| 31 | + |
| 32 | +## YJIT |
| 33 | + |
| 34 | +* Mejoras en desempeño significativas respecto a 3.2 |
| 35 | + * Mejorado el soporte para argumentos splat y para el resto de argumentos. |
| 36 | + * Los registros se localizan para una operación en pila de la máquina virtual. |
| 37 | + * Se compila más llamados con argumentos opcionales. |
| 38 | + * Se optimizaron especialmente `Integer#!=`, `String#!=`, |
| 39 | + `Kernel#block_given?`, `Kernel#is_a?`, `Kernel#instance_of?` y |
| 40 | + `Module#===`. |
| 41 | + * Las variables de instancia ya no salen al interprete con Formas de Objetos |
| 42 | + mega-mórficas. |
| 43 | +* Los metadatos para el código compilado usa mucha menos memoria. |
| 44 | +* Generación de código mejorada en ARM64 |
| 45 | +* Opción para iniciar YJIT en modo pausado para después habilitarlo |
| 46 | + manualmente |
| 47 | + * `--yjit-pause` y `RubyVM::YJIT.resume` |
| 48 | + * Esto puede usarse para habilitar YJIT sólo después de que su aplicación |
| 49 | + hay completado el arranque. |
| 50 | +* La opción para salir del modo con trazas ahora soporta muestreo |
| 51 | + * `--trace-exits-sample-rate=N` |
| 52 | +* Correcciones a múltiples fallas |
| 53 | + |
| 54 | + |
| 55 | +## Otros Características Nuevas Notables |
| 56 | + |
| 57 | +### Lenguaje |
| 58 | + |
| 59 | +## Mejoras en desempeño |
| 60 | + |
| 61 | +* `defined?(@ivar)` se optimiza con Formas de Objetos |
| 62 | + |
| 63 | +## Otros cambios notables desde 3.2 |
| 64 | + |
| 65 | + |
| 66 | + |
| 67 | +## Incidentes de compatibilidad |
| 68 | + |
| 69 | +Nota: Correciones a falla que excluía características. |
| 70 | + |
| 71 | +### Constantes elminadas |
| 72 | + |
| 73 | +Las siguientes constantes que eran despreciadas han sido eliminadas. |
| 74 | + |
| 75 | + |
| 76 | +### Métodos eliminados |
| 77 | + |
| 78 | +Los siguientes métodos que eran despreciados han sido eliminados. |
| 79 | + |
| 80 | + |
| 81 | +## Problemas de compatibilidad con Stdlib |
| 82 | + |
| 83 | +### Eliminación de `ext/readline` |
| 84 | + |
| 85 | +* Tenemos `reline` que es una implementación en Ruby puro compatible con |
| 86 | + el API de `ext/readline`. Dependeremos de `reline` a futuro. Si |
| 87 | + necesita usar `ext/readline`, puede instalar `ext/readline` vía rubygems.org |
| 88 | + con `gem install readline-ext`. |
| 89 | +* Ya no necesitamos instalar librerías como `libreadline` o `libedit`. |
| 90 | + |
| 91 | +## Actualizaciones al API en C |
| 92 | + |
| 93 | +### APIs en C actualizados |
| 94 | + |
| 95 | +Los siguientes APIs han sido actualizados. |
| 96 | + |
| 97 | + |
| 98 | + |
| 99 | +### APIs en C eliminados |
| 100 | + |
| 101 | +Los siguientes APIs despreciados han sido eliminados. |
| 102 | + |
| 103 | +## Actualizaciones a la librería estándar. |
| 104 | + |
| 105 | + |
| 106 | +Las siguientes gemas predeterminadas se han actualizado. |
| 107 | + |
| 108 | +* RubyGems 3.5.0.dev |
| 109 | +* bigdecimal 3.1.4 |
| 110 | +* bundler 2.5.0.dev |
| 111 | +* csv 3.2.7 |
| 112 | +* fiddle 1.1.2 |
| 113 | +* fileutils 1.7.1 |
| 114 | +* irb 1.6.4 |
| 115 | +* optparse 0.4.0.pre.1 |
| 116 | +* psych 5.1.0 |
| 117 | +* reline 0.3.3 |
| 118 | +* stringio 3.0.7 |
| 119 | +* strscan 3.0.7 |
| 120 | +* syntax_suggest 1.0.4 |
| 121 | +* time 0.2.2 |
| 122 | +* timeout 0.3.2 |
| 123 | +* uri 0.12.1 |
| 124 | + |
| 125 | +Las siguientes gemas incluídas han sido actualizadas. |
| 126 | + |
| 127 | +* minitest 5.18.0 |
| 128 | +* rbs 3.1.0 |
| 129 | +* typeprof 0.21.7 |
| 130 | +* debug 1.8.0 |
| 131 | + |
| 132 | +Ve la publicación en GitHub com [Logger](https://github.com/ruby/logger/releases) o |
| 133 | +ben la bitácora de cambios con detalles de las gemas predeterminadas |
| 134 | +y las gemas incluidas. |
| 135 | + |
| 136 | + |
| 137 | +Ver detalles en el archivo |
| 138 | +[NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md) |
| 139 | +o en [la bitácora de cambios](https://github.com/ruby/ruby/compare/v3_2_0...{{ release.tag }}). |
| 140 | + |
| 141 | +Con estos cambios, [{{ release.stats.files_changed }} archivos cambiados, {{ release.stats.insertions }} inserciones(+), {{ release.stats.deletions }} eliminaciones(-)](https://github.com/ruby/ruby/compare/v3_2_0...{{ release.tag }}#file_bucket) |
| 142 | +desde Ruby 3.2.0! |
| 143 | + |
| 144 | +¡Feliz Navidad, Felices Fiestas, y disfruten programando con Ruby 3.3! |
| 145 | + |
| 146 | +## Descargas |
| 147 | + |
| 148 | +* <{{ release.url.gz }}> |
| 149 | + |
| 150 | + SIZE: {{ release.size.gz }} |
| 151 | + SHA1: {{ release.sha1.gz }} |
| 152 | + SHA256: {{ release.sha256.gz }} |
| 153 | + SHA512: {{ release.sha512.gz }} |
| 154 | + |
| 155 | +* <{{ release.url.xz }}> |
| 156 | + |
| 157 | + SIZE: {{ release.size.xz }} |
| 158 | + SHA1: {{ release.sha1.xz }} |
| 159 | + SHA256: {{ release.sha256.xz }} |
| 160 | + SHA512: {{ release.sha512.xz }} |
| 161 | + |
| 162 | +* <{{ release.url.zip }}> |
| 163 | + |
| 164 | + SIZE: {{ release.size.zip }} |
| 165 | + SHA1: {{ release.sha1.zip }} |
| 166 | + SHA256: {{ release.sha256.zip }} |
| 167 | + SHA512: {{ release.sha512.zip }} |
| 168 | + |
| 169 | +## Qué es Ruby |
| 170 | + |
| 171 | +Ruby primero fue desarrollado por Matz (Yukihiro Matsumoto) en 1993, |
| 172 | +y ahora es desarrollado como Código Abieto. Corre en múltiples |
| 173 | +plataformas y es usado en todo el mundo especialmente para desarrollo web. |
0 commit comments