Skip to content

Commit 47c9d5e

Browse files
authored
Translating posts of December (es) (#3698)
1 parent 9bc6d1d commit 47c9d5e

File tree

2 files changed

+374
-0
lines changed

2 files changed

+374
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
layout: news_post
3+
title: "Publicación de Ruby 3.4.8"
4+
author: k0kubun
5+
translator: vtamara
6+
date: 2025-12-17 00:24:30 +0000
7+
lang: es
8+
---
9+
10+
Ruby 3.4.8 ha sido publicado.
11+
12+
Esta es una actualización rutinaria que incluye correcciones a fallas.
13+
Por favor ve más detalles en las [notas de publicación de GitHub](https://github.com/ruby/ruby/releases/tag/v3_4_8).
14+
15+
## Calendario de Publicación
16+
17+
Planeamos publicar la versión más reciente de Ruby
18+
(actualmente Ruby 3.4) cada dos meses tras la versión anterior.
19+
Ruby 3.4.9 está programada para Febrero de 2026.
20+
21+
Si ocurre un cambio que afecte significativamente a los usuarios,
22+
podría publicarse una versión antes de lo planeado, y las
23+
siguientes se correrán respectivamente.
24+
25+
## Descargas
26+
27+
{% assign release = site.data.releases | where: "version", "3.4.8" | first %}
28+
29+
* <{{ release.url.gz }}>
30+
31+
SIZE: {{ release.size.gz }}
32+
SHA1: {{ release.sha1.gz }}
33+
SHA256: {{ release.sha256.gz }}
34+
SHA512: {{ release.sha512.gz }}
35+
36+
* <{{ release.url.xz }}>
37+
38+
SIZE: {{ release.size.xz }}
39+
SHA1: {{ release.sha1.xz }}
40+
SHA256: {{ release.sha256.xz }}
41+
SHA512: {{ release.sha512.xz }}
42+
43+
* <{{ release.url.zip }}>
44+
45+
SIZE: {{ release.size.zip }}
46+
SHA1: {{ release.sha1.zip }}
47+
SHA256: {{ release.sha256.zip }}
48+
SHA512: {{ release.sha512.zip }}
49+
50+
## Comentario de la versión
51+
52+
Muchos contribuyentes, desarrolladores y usuarios que proveyeron reportes
53+
de fallas nos ayudaron a crear esta versión.
54+
Gracias por sus contribuciones.
Lines changed: 320 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,320 @@
1+
---
2+
layout: news_post
3+
title: "Publicado Ruby 4.0.0 preview3"
4+
author: "naruse"
5+
translator: vtamara
6+
date: 2025-12-18 00:00:00 +0000
7+
lang: es
8+
---
9+
10+
{% assign release = site.data.releases | where: "version", "4.0.0-preview3" | first %}
11+
Nos complace anunciar la publicación de Ruby {{ release.version }}.
12+
Ruby 4.0 introduce Ruby::BOX y "ZJIT", y agrega muchas mejoras.
13+
14+
## Ruby::BOX
15+
16+
Una nueva característica (experimental) para dar separación en definiciones.
17+
Vea detalles de "Ruby Box" en [doc/language/box.md](https://github.com/ruby/ruby/blob/master/doc/language/box.md).
18+
[[Característica #21311]] [[Misc #21385]]
19+
20+
## Cambios en el lenguaje
21+
22+
* `*nil` ya no llama a `nil.to_a`, de forma similar a como `**nil`
23+
no llama a `nil.to_hash`. [[Característica #21047]]
24+
25+
* Los operadores binarios lógicos (`||`, `&&`, `and` and `or`) al comienzo
26+
de una línea continúan la línea anterior, cómo un punto fluido.
27+
Los siguientes dos códigos son iguales:
28+
29+
```ruby
30+
if condicion1
31+
&& condicion2
32+
...
33+
end
34+
```
35+
36+
```ruby
37+
if condicion1 && condicion2
38+
...
39+
end
40+
```
41+
42+
[[Característica #20925]]
43+
44+
## Actualizaciones a las clases principales
45+
46+
Nota: Sólo listamos actualizaciones mayores a clases.
47+
48+
* Kernel
49+
50+
* `Kernel#inspect` ahora comprueba la existencia del método `#instance_variables_to_inspect`,
51+
lo que permite controlar qué variables de instancia se muestran en la cadena `#inspect`:
52+
53+
```ruby
54+
class DatabaseConfig
55+
def initialize(host, user, password)
56+
@host = host
57+
@user = user
58+
@password = password
59+
end
60+
61+
private def instance_variables_to_inspect = [:@host, :@user]
62+
end
63+
64+
conf = DatabaseConfig.new("localhost", "root", "hunter2")
65+
conf.inspect #=> #<DatabaseConfig:0x0000000104def350 @host="localhost", @user="root">
66+
```
67+
68+
[[Característica #21219]]
69+
70+
* Se eliminó un comportamiento obsoleto: la creación de procesos mediante `Kernel#open` con un
71+
`|` inicial. [[Característica #19630]]
72+
73+
* Binding
74+
75+
* `Binding#local_variables` ya no incluye parámetros numerados.
76+
Además, `Binding#local_variable_get` y `Binding#local_variable_set` rechazan
77+
manejar parámetros numerados. [[Error #21049]]
78+
79+
* File
80+
81+
* `File::Stat#birthtime` ahora está disponible en Linux a través de la llamada al sistema statx
82+
cuando el kernel y el sistema de archivos lo admiten.
83+
[[Característica #21205]]
84+
85+
* IO
86+
87+
* `IO.select` acepta `Float::INFINITY` como argumento de tiempo de espera.
88+
[[Característica #20610]]
89+
90+
* Se eliminó un comportamiento obsoleto: la creación de procesos mediante métodos de clase `IO`
91+
con un `|` inicial. [[Característica #19630]]
92+
93+
* Math
94+
95+
* Se agregaron `Math.log1p` y `Math.expm1`. [[Característica #21527]]
96+
97+
* Method
98+
99+
* `Method#source_location`, `Proc#source_location` y
100+
`UnboundMethod#source_location` ahora devuelven información de ubicación extendida
101+
con 5 elementos: `[ruta, línea_inicio, columna_inicio,
102+
línea_fin, columna_fin]`. El formato anterior de dos elementos `[ruta,
103+
línea]` aún se puede obtener llamando a `.take(2)` sobre el resultado.
104+
[[Característica #6012]]
105+
106+
* Proc
107+
108+
* `Proc#parameters` ahora muestra los parámetros opcionales anónimos como `[:opt]`
109+
en lugar de `[:opt, nil]`, lo que hace que la salida sea coherente con el caso en que el
110+
parámetro anónimo es obligatorio. [[Error #20974]]
111+
112+
* Ractor
113+
114+
* Se agregó la clase `Ractor::Port` para un nuevo mecanismo de sincronización
115+
para la comunicación entre Ractors. [[Característica #21262]]
116+
117+
```ruby
118+
port1 = Ractor::Port.new
119+
port2 = Ractor::Port.new
120+
Ractor.new port1, port2 do |port1, port2|
121+
port1 << 1
122+
port2 << 11
123+
port1 << 2
124+
port2 << 12
125+
end
126+
2.times{ p port1.receive } #=> 1, 2
127+
2.times{ p port2.receive } #=> 11, 12
128+
```
129+
130+
`Ractor::Port` proporciona los siguientes métodos:
131+
132+
* `Ractor::Port#receive`
133+
* `Ractor::Port#send` (o `Ractor::Port#<<`)
134+
* `Ractor::Port#close`
135+
* `Ractor::Port#closed?`
136+
137+
Como resultado, se eliminaron `Ractor.yield` y `Ractor#take`.
138+
139+
* Se agregaron `Ractor#join` y `Ractor#value` para esperar la
140+
finalización de un Ractor. Estos son similares a `Thread#join`
141+
y `Thread#value`.
142+
143+
* Se agregaron `Ractor#monitor` y `Ractor#unmonitor` como interfaces de bajo nivel
144+
utilizadas internamente para implementar `Ractor#join`.
145+
146+
* `Ractor.select` ahora solo acepta Ractors y Ports. Si se proporcionan Ractors,
147+
devuelve un valor cuando un Ractor finaliza.
148+
149+
* Se agregó `Ractor#default_port`. Cada `Ractor` tiene un puerto predeterminado,
150+
que es utilizado por `Ractor.send` y `Ractor.receive`. * Se eliminaron `Ractor#close_incoming` y `Ractor#close_outgoing`.
151+
152+
* Se introdujeron `Ractor.shareable_proc` y `Ractor.shareable_lambda`
153+
para crear objetos Proc o lambda compartibles.
154+
[[Característica #21550]], [[Característica #21557]]
155+
156+
* Range
157+
158+
* `Range#to_set` y `Enumerator#to_set` ahora realizan comprobaciones de tamaño para evitar
159+
problemas con rangos infinitos. [[Falla #21654]]
160+
161+
* `Range#overlap?` ahora maneja correctamente los rangos infinitos (sin límites).
162+
[[Falla #21185]]
163+
164+
* Se corrigió el comportamiento de `Range#max` en rangos de enteros sin límite inferior.
165+
[[Falla #21174]] [[Falla #21175]]
166+
167+
* Ruby
168+
169+
* Se ha definido un nuevo módulo de nivel superior `Ruby`, que contiene
170+
constantes relacionadas con Ruby. Este módulo estaba reservado en Ruby 3.4
171+
y ahora está definido oficialmente. [[Característica #20884]]
172+
173+
* Ruby::Box
174+
175+
* Una nueva característica (experimental) para proporcionar separación entre definiciones.
176+
Para obtener detalles sobre "Ruby Box", consulte [doc/language/box.md](https://github.com/ruby/ruby/blob/master/doc/language/box.md).
177+
[[Característica #21311]] [[Misc #21385]]
178+
179+
* Set
180+
181+
* `Set` ahora es una clase principal, en lugar de una clase de la biblioteca estándar de carga automática.
182+
[[Característica #21216]]
183+
184+
* `Set#inspect` ahora devuelve una cadena adecuada para `eval`, utilizando la
185+
sintaxis `Set[]` (por ejemplo, `Set[1, 2, 3]` en lugar de
186+
`#<Set: {1, 2, 3}>`). Esto lo hace coherente con otras clases de colecciones principales
187+
como Array y Hash. [[Característica #21389]]
188+
189+
* Pasar argumentos a `Set#to_set` y `Enumerable#to_set` ahora está obsoleto.
190+
[[Característica #21390]]
191+
192+
* Socket
193+
194+
## JIT
195+
196+
* ZJIT
197+
* Se agregó un compilador JIT experimental basado en métodos.
198+
Use `--enable-zjit` en `configure` para habilitar el soporte `--zjit`.
199+
* A partir de Ruby 4.0.0-preview2, ZJIT aún no está listo para acelerar
200+
la mayoría de los benchmarks.
201+
Por favor, absténgase de evaluar ZJIT por el momento. Manténgase
202+
atento al lanzamiento de Ruby 4.0.
203+
204+
* YJIT
205+
* Estadísticas de YJIT
206+
* `ratio_in_yjit` ya no funciona en la compilación predeterminada.
207+
Use `--enable-yjit=stats` en `configure` para habilitarlo
208+
con `--yjit-stats`.
209+
* Se agregó `invalidate_everything` a las estadísticas
210+
predeterminadas, que se incrementa cuando TracePoint invalida
211+
todo el código.
212+
* Se agregaron las opciones `mem_size:` y `call_threshold:` a
213+
`RubyVM::YJIT.enable`.
214+
* RJIT
215+
* Se eliminó `--rjit`. Trasladaremos la implementación de la API JIT de
216+
terceros al repositorio [ruby/rjit](https://github.com/ruby/rjit).
217+
218+
219+
* ZJIT
220+
* Se introduce un [compilador JIT experimental basado en métodos](https://docs.ruby-lang.org/en/master/jit/zjit_md.html).
221+
Para habilitar soporte `--zjit`, compile Ruby con Rust 1.85.0 o
222+
posterior.
223+
* En Ruby 4.0.0, ZJIT es tan rápido como el interprete, pero aún no
224+
tan rápido como YJIT.
225+
Animamos a experimentar con ZJIT, pero advertimos no desplegarlo
226+
en producción por ahora.
227+
* Nuestra meta es hacer ZJIT más rápido que YJIT y listo para
228+
producción en Ruby 4.1.
229+
* YJIT
230+
* `RubyVM::YJIT.runtime_stats`
231+
* `ratio_in_yjit` ya no funciona en la compilación predeterminada.
232+
Use `--enable-yjit=stats` en `configure` para habilitarlo
233+
con `--yjit-stats`.
234+
* Se agregó `invalidate_everything` a las estadísticas
235+
predeterminadas, que se incrementa cuando TracePoint invalida
236+
todo el código.
237+
* Se agregaron las opciones `mem_size:` y `call_threshold:` a
238+
`RubyVM::YJIT.enable`.
239+
* RJIT
240+
* Se eliminó `--rjit`. Trasladaremos la implementación de la API JIT de
241+
terceros al repositorio [ruby/rjit](https://github.com/ruby/rjit).
242+
243+
244+
## Cambios varios
245+
246+
Consulte [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md)
247+
o le[registro de commits](https://github.com/ruby/ruby/compare/v3_4_0...{{ release.tag }}) para obtener más detalles.
248+
249+
Con estos cambios, ¡[{{ release.stats.files_changed }} archivos modificados, {{ release.stats.insertions }} inserciones (+), {{ release.stats.deletions }} eliminaciones (-)](https://github.com/ruby/ruby/compare/v3_4_0...{{ release.tag }}#file_bucket)
250+
desde Ruby 3.4.0!
251+
252+
253+
## Descargas
254+
255+
* <{{ release.url.gz }}>
256+
257+
SIZE: {{ release.size.gz }}
258+
SHA1: {{ release.sha1.gz }}
259+
SHA256: {{ release.sha256.gz }}
260+
SHA512: {{ release.sha512.gz }}
261+
262+
* <{{ release.url.xz }}>
263+
264+
SIZE: {{ release.size.xz }}
265+
SHA1: {{ release.sha1.xz }}
266+
SHA256: {{ release.sha256.xz }}
267+
SHA512: {{ release.sha512.xz }}
268+
269+
* <{{ release.url.zip }}>
270+
271+
SIZE: {{ release.size.zip }}
272+
SHA1: {{ release.sha1.zip }}
273+
SHA256: {{ release.sha256.zip }}
274+
SHA512: {{ release.sha512.zip }}
275+
276+
## What is Ruby
277+
278+
Ruby fue desarrollado por primera vez por Matz (Yukihiro Matsumoto) en 1993,
279+
y actualmente se desarrolla como software de código abierto. Se ejecuta en
280+
múltiples plataformas y se utiliza en todo el mundo, especialmente para el
281+
desarrollo web.
282+
283+
[Característica #6012]: https://bugs.ruby-lang.org/issues/6012
284+
[Característica #15408]: https://bugs.ruby-lang.org/issues/15408
285+
[Característica #17473]: https://bugs.ruby-lang.org/issues/17473
286+
[Característica #18455]: https://bugs.ruby-lang.org/issues/18455
287+
[Característica #19630]: https://bugs.ruby-lang.org/issues/19630
288+
[Falla #19868]: https://bugs.ruby-lang.org/issues/19868
289+
[Característica #19908]: https://bugs.ruby-lang.org/issues/19908
290+
[Característica #20610]: https://bugs.ruby-lang.org/issues/20610
291+
[Característica #20724]: https://bugs.ruby-lang.org/issues/20724
292+
[Característica #20750]: https://bugs.ruby-lang.org/issues/20750
293+
[Característica #20884]: https://bugs.ruby-lang.org/issues/20884
294+
[Característica #20925]: https://bugs.ruby-lang.org/issues/20925
295+
[Característica #20971]: https://bugs.ruby-lang.org/issues/20971
296+
[Falla #20974]: https://bugs.ruby-lang.org/issues/20974
297+
[Característica #21047]: https://bugs.ruby-lang.org/issues/21047
298+
[Falla #21049]: https://bugs.ruby-lang.org/issues/21049
299+
[Característica #21166]: https://bugs.ruby-lang.org/issues/21166
300+
[Falla #21174]: https://bugs.ruby-lang.org/issues/21174
301+
[Falla #21175]: https://bugs.ruby-lang.org/issues/21175
302+
[Falla #21185]: https://bugs.ruby-lang.org/issues/21185
303+
[Característica #21205]: https://bugs.ruby-lang.org/issues/21205
304+
[Característica #21216]: https://bugs.ruby-lang.org/issues/21216
305+
[Característica #21219]: https://bugs.ruby-lang.org/issues/21219
306+
[Característica #21258]: https://bugs.ruby-lang.org/issues/21258
307+
[Característica #21262]: https://bugs.ruby-lang.org/issues/21262
308+
[Característica #21275]: https://bugs.ruby-lang.org/issues/21275
309+
[Característica #21287]: https://bugs.ruby-lang.org/issues/21287
310+
[Característica #21311]: https://bugs.ruby-lang.org/issues/21311
311+
[Característica #21347]: https://bugs.ruby-lang.org/issues/21347
312+
[Característica #21360]: https://bugs.ruby-lang.org/issues/21360
313+
[Misc #21385]: https://bugs.ruby-lang.org/issues/21385
314+
[Característica #21389]: https://bugs.ruby-lang.org/issues/21389
315+
[Característica #21390]: https://bugs.ruby-lang.org/issues/21390
316+
[Característica #21459]: https://bugs.ruby-lang.org/issues/21459
317+
[Característica #21527]: https://bugs.ruby-lang.org/issues/21527
318+
[Característica #21550]: https://bugs.ruby-lang.org/issues/21550
319+
[Característica #21557]: https://bugs.ruby-lang.org/issues/21557
320+
[Falla #21654]: https://bugs.ruby-lang.org/issues/21654

0 commit comments

Comments
 (0)