Skip to content

Commit 5dfae1c

Browse files
authored
Translate Ruby 3.4.0 rc1 Released (es) (#3457)
1 parent d9ec129 commit 5dfae1c

File tree

1 file changed

+224
-0
lines changed

1 file changed

+224
-0
lines changed
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
---
2+
layout: news_post
3+
title: "Publicado Ruby 3.4.0 rc1"
4+
author: "naruse"
5+
translator: vtamara
6+
date: 2024-12-12 00:00:00 +0000
7+
lang: es
8+
---
9+
10+
{% assign release = site.data.releases | where: "version", "3.4.0-rc" | first %}
11+
Nos complace anunciar la publicación de Ruby {{ release.version }}.
12+
13+
## Prism
14+
15+
Cambia el analizador sintáctico predeterminado de parse.y a Prism.
16+
[[Característica #20564]]
17+
18+
## Recolector de basura modular
19+
20+
* Pueden cargarse dinámicamente implementaciones alternativas del recolector
21+
de basura (__Garbage Collector__ o __GC__) mediante la característica
22+
recolector de basura modular. Para habilitar esta característica
23+
configure Ruby con `--with-modular-gc` durante la compilación.
24+
Las librerías del GC pueden cargarse en tiempo de ejecución con la
25+
variable de ambiente `RUBY_GC_LIBRARY`. [[Característica #20351]]
26+
27+
* El recolector de basura incorporado en Ruby se ha dividido en un archivo
28+
`gc/default/default.c` que interacuta con Ruby usando la API definida en
29+
`gc/gc_impl.h`. El recolector de basura incorporado ahora puede ser compilado
30+
como librería usando `make modular-gc MODULAR_GC=default` y se habilita
31+
con la variable de ambiente `RUBY_GC_LIBRARY=default`. [[Característica#20470]]
32+
33+
* Se provee una librería de GC experimental en [MMTk](https://www.mmtk.io/).
34+
Esta librería de GC puede compilarse usando `make modular-gc MODULAR_GC=mmtk`
35+
y se habiita usando la variable de ambiente `RUBY_GC_LIBRARY=mmtk`.
36+
Esto requiere las herramientas de Rust en el computador donde se compila.
37+
[[Característica#20860]]
38+
39+
40+
## Cambios en el lenguaje
41+
42+
* Las cadenas literales en archivos sin el comentario `frozen_string_literal`
43+
ahora emiten una advertencia de deprecación cuando se mutan.
44+
Estas advertencia pueden ser habilitadas con `-W:deprecated`
45+
o estableciendo `Warning[:deprecated] = true`.
46+
Para deshabilitar este cambio, puede ejecutar Ruby con el argumento
47+
`--disable-frozen-string-literal` desde la línea de ordenes.
48+
[[Característica #20205]]
49+
50+
* `it` se agrega para referenciar un parámetro de bloque.
51+
[[Característica #18980]]
52+
53+
* Ahora se soporta hacer splat de palabras clave con `nil` cuando se
54+
llaman métodos.
55+
`**nil` se trata de manera similar a `**{}`, no pasar palabras clave,
56+
y no llamar método de conversión alguno. [[Falla #20064]]
57+
58+
* Ya no se permite pasar bloques como índices. [[Falla #19918]]
59+
60+
* Ya no se permiten argumentos de palabra clave como índices. [[Falla #20218]]
61+
62+
## YJIT
63+
64+
TL;DR:
65+
* Mejor resultado en la mayoría de pruebas de desempeño tanto en plataformas
66+
x86-64 como en arm64.
67+
* Uso de memoria reducido en los meta-datos de compilación.
68+
* Se corrigen diversas fallas. YJIT es ahora más robusto y mejor probado.
69+
70+
Nuevas características:
71+
* Agrega un límite de memoria unificado mediante la opción en la línea
72+
de ordenes `--yjit-mem-size` (128MiB de manera predeterminada)
73+
que hace seguimiento al uso total de memoria de YJIT y que es más
74+
intuitivo que el anterior `--yjit-exec-mem-size`.
75+
* Ahora hay más estadísticas disponible con `RubyVM::YJIT.runtime_stats`
76+
* Añade a la bitácora de compilación seguimiento de lo que
77+
se ha compilado con `--yjit-log`
78+
* La cola de la bitácora también está disponible en tiempo de ejecución
79+
con `RubyVM::YJIT.log`
80+
* Añade soporte para constantes compartidas en modo multi-ractor.
81+
* Ahora puede hacer seguimiento a la cuenta de salidas con `--yjit-trace-exits=COUNTER`
82+
83+
Nuevas optimizaciones:
84+
* El contexto comprimido reduce la memoria requerida para almacenar los
85+
metadatos de YJIT.
86+
* Localizador mejorado con la habilidad de localizar registros para
87+
variables locales.
88+
* Cuando YJIT está habilitado, usa más primitivas fundamentales escritas
89+
en Ruby:
90+
* `Array#each`, `Array#select`, `Array#map` reescritas en Ruby para dar
91+
mejor desempeño [[Caracteristica #20182]].
92+
* Habilidad de ejecutar en línea métodos pequeños/triviales tales como:
93+
* Métodos vacios.
94+
* Métodos que retornan una constante.
95+
* Métodos que retornan self.
96+
* Métodos que retornan directamente un argumento.
97+
* codegen especializado para muchos más métodos en tiempo de ejecución.
98+
* Optimiza `String#getbyte`, `String#setbyte` y otros métodos de string.
99+
* Optimiza operaciones entre bits para hacer más rápidas las manipulaciones de
100+
bits/bytes a bajo nivel.
101+
* Otra optimizaciones incrementales diversas.
102+
103+
## Clases fundamentales actualizadas
104+
105+
Nota: Listamos sólo actualizaciones mayores de clases.
106+
107+
* Exception
108+
109+
* `Exception#set_backtrace` ahora acepta arreglos de
110+
`Thread::Backtrace::Location`.
111+
`Kernel#raise`, `Thread#raise` y `Fiber#raise` también aceptan
112+
este nuevo formato. [[Característica #13557]]
113+
114+
* Range
115+
116+
* `Range#size` ahora lanza `TypeError` si el rango no es iterable.
117+
[[Varios #18984]]
118+
119+
120+
121+
## Problemas de compatibilidad
122+
123+
Nota: Excluyendo correcciones a problemas en características.
124+
125+
* Los mensajes de error y la presentación de trazas han sido cambiadas.
126+
* Se usa un sólo apóstrofe en lugar de un apostrofe invertido para
127+
iniciar una cita. [[Característica #16495]]
128+
* Se presenta un nombre de clase antes del nombre de un método
129+
(sólo cuando la clase tiene un nombre permanente). [[Característica #19117]]
130+
* También se cambiaron de la manera análoga los métodos `Kernel#caller`,
131+
`Thread::Backtrace::Location`, etc.
132+
133+
```
134+
Antes:
135+
test.rb:1:in `foo': undefined method `time' for an instance of Integer
136+
from test.rb:2:in `<main>'
137+
138+
Ahora:
139+
test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer
140+
from test.rb:2:in '<main>'
141+
```
142+
143+
144+
## Actualizaciones del API en C
145+
146+
* Se han eliminado `rb_newobj` y `rb_newobj_of` (y los respectivos macros
147+
`RB_NEWOBJ`, `RB_NEWOBJ_OF`, `NEWOBJ`, `NEWOBJ_OF`).
148+
[[Característica #20265]]
149+
* Se eliminó la función despreciada `rb_gc_force_recycle`.
150+
[[Característica #18290]]
151+
152+
## Cambios diversos
153+
154+
* Al pasar un bloque a un método que no use el bloque recibido se
155+
presentará una advertencia en modo verboso (`-w`).
156+
[[Característica #15554]]
157+
158+
* Al redefinir algunos métodos fundamentales que se han optimizado
159+
de manera especial por el interprete y por JIT como `String.freeze` o
160+
`Integer#+` ahora produce una advertencia en la clase de
161+
desempeño (`-W:performance` o `Warning[:performance] = true`).
162+
[[Característica #20429]]
163+
164+
Vea notas de publicación como las de
165+
[Logger](https://github.com/ruby/logger/releases) o
166+
archivos de cambios (changelog) con detalles de las gemas
167+
predeterminadas y las gemas incluidas.
168+
169+
Ver más detalles en
170+
[NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md)
171+
o en la [bitácora de contribuciones](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}).
172+
173+
Con estas novedades, [{{ release.stats.files_changed }} archivos cambiados, {{ release.stats.insertions }} inserciones(+), {{ release.stats.deletions }} eliminaciones(-)](https://github.com/ruby/ruby/compare/v3_3_0...{{ release.tag }}#file_bucket)
174+
desde Ruby 3.3.0!
175+
176+
177+
## Descargas
178+
179+
* <{{ release.url.gz }}>
180+
181+
SIZE: {{ release.size.gz }}
182+
SHA1: {{ release.sha1.gz }}
183+
SHA256: {{ release.sha256.gz }}
184+
SHA512: {{ release.sha512.gz }}
185+
186+
* <{{ release.url.xz }}>
187+
188+
SIZE: {{ release.size.xz }}
189+
SHA1: {{ release.sha1.xz }}
190+
SHA256: {{ release.sha256.xz }}
191+
SHA512: {{ release.sha512.xz }}
192+
193+
* <{{ release.url.zip }}>
194+
195+
SIZE: {{ release.size.zip }}
196+
SHA1: {{ release.sha1.zip }}
197+
SHA256: {{ release.sha256.zip }}
198+
SHA512: {{ release.sha512.zip }}
199+
200+
## Qué es Ruby
201+
202+
Ruby fu desarrollado inicialmente por Matz (Yukihiro Matsumoto) en 1993,
203+
y ahora se desarrolla como Fuentes Abiertas. Corre en múltiples
204+
plataformas y se usa en todo el mundo especialmente para
205+
de desarrollo de aplicaciones web.
206+
207+
[Característica #13557]: https://bugs.ruby-lang.org/issues/13557
208+
[Característica #15554]: https://bugs.ruby-lang.org/issues/15554
209+
[Característica #16495]: https://bugs.ruby-lang.org/issues/16495
210+
[Característica #18290]: https://bugs.ruby-lang.org/issues/18290
211+
[Característica #18980]: https://bugs.ruby-lang.org/issues/18980
212+
[Varios #18984]: https://bugs.ruby-lang.org/issues/18984
213+
[Característica #19117]: https://bugs.ruby-lang.org/issues/19117
214+
[Falla #19918]: https://bugs.ruby-lang.org/issues/19918
215+
[Falla #20064]: https://bugs.ruby-lang.org/issues/20064
216+
[Característica #20182]: https://bugs.ruby-lang.org/issues/20182
217+
[Característica #20205]: https://bugs.ruby-lang.org/issues/20205
218+
[Falla #20218]: https://bugs.ruby-lang.org/issues/20218
219+
[Característica #20265]: https://bugs.ruby-lang.org/issues/20265
220+
[Característica #20351]: https://bugs.ruby-lang.org/issues/20351
221+
[Característica #20429]: https://bugs.ruby-lang.org/issues/20429
222+
[Característica #20470]: https://bugs.ruby-lang.org/issues/20470
223+
[Característica #20564]: https://bugs.ruby-lang.org/issues/20564
224+
[Característica #20860]: https://bugs.ruby-lang.org/issues/20860

0 commit comments

Comments
 (0)