Publicado Ruby 2.7.0-preview1

17/06/2019Artículo original

Nos complace anunciar la publiación de Ruby 2.7.0-preview1.

Es una versión previa que se publica para obtener retroalimentación sobre la versión final planeada para Diciembre.Introduce una serie de características nuevas y mejoras en desempeño, las más notables son:

  • Compactar en el Recolector de Basura (GC)
  • Reconocimiento de patrones
  • Mejora en REPL

Compactar en el recolector de basura (GC)

Esta versión introduce la posibilidad de compactar en el recolector de basura, que defragmenta un espacio de memoria fragmentado.

Algunos programas Ruby de múltiples hilos pueden causar fragmentación en la memoria, que conlleva a un alto usode memoria y a que se degrade la velocidad.

El método GC.compact se introduce para compactar el montón (heap). Esta función compacta los objetos vivos que hay en el montón de manera que usen menos páginas, y el montón resulta más amigable con la técnica de administración de recursos compartidos “Copiar ante Escritura” (Copy on Write o CoW). #15626

Reconocimiento de Patrones [Experimental]

El reconocimiento de patrones, es una característica ampliamente usada en lenguajes de programación funcional, se introduce como característica experimental. #14912Puede recorrer un objeto dado y asignar su valor si concuerda con un patrón.

json ='{ "nombre": "Alice", "edad": 30, "hijos": [ { "nombre": "Bob", "edad": 2 } ]}'case JSON.parse(json, symbolize_names: true)in {nombre: "Alice", hijos: [{nombre: "Bob", edad: edad}]} p edadend

Puede ver más detalles en Pattern matching – New feature in Ruby 2.7.

  Más de 10 títulos recomendados para techies

Mejora en REPL

irb, el ambiente interactivo incluido con Ruby (REPL; Read-Eval-Print-Loop; Bucle-Leer-Evaluar-Presentar), ahora soporta ediciónde múltiples líneas. Es potenciado por reline, la implementación en puro Ruby de readline.También provee integración con rdoc. En irb puede presentar el manual de referencia para una clase dada, para un modulo o para un método. #14683, #14787, #14918Además, ahora se presentan con colores tanto el código fuente de su programa al iniciar una sesión IRB con binding.irb como los resultados de inspeccionar los objetos de las clases del núcleo de ruby.

Otras características notables

  • Un operador para referenciar un método, .:, se introduce como característica experimental. #12125, #13581
  • Como característica experimental se introducen paramétros numerados como párametros por omisión en bloques. #4475
  • Un rango sin inicio se introduce de forma experimental. Podría no ser tan útil como un rango sin terminación, pero es bueno para DSL. #14799ary[..3] # identico a ary[0..3]rel.where(ventas: ..100)
  • Se añade Enumerable#tally. Que cuenta las ocurrencias de cada elemento.[“a”, “b”, “c”, “b”].tally#=> {“a”=>1, “b”=>2, “c”=>1}
  TRUCO VS #1: Encuentra cualquier cosa instantáneamente en Visual Studio

Mejoras en desempeño

  • JIT [Experimental]El código compilado con JIT es recompilado a uno menos optimizado cuando los supuestos de la optimización dejan de ser válidos.Un método se puede ejecutar en línea (method inlining o inserción en lugar de llamado) cuando un método se considera puro. Esta optimización aún es experimetnal y muchos métodos aún no se consideran puros.El valor por omisión de –jit-min-calls cambió de 5 a 10,000El valor por omisión de –jit-max-cache cambió de 1,000 a 100

Otros cambios notables desde la versión 2.6

  • Proc.new y proc sin bloque en un método llamado con un bloque produce una advertencia.
  • lambda sin un bloque en un método llamado con un bloque produce un error.
  • Actualizada la versión de Unicode y Emoji de 11.0.0 a 12.0.0. [Característica #15321]
  • Actualizada la versión de Unicode a 12.1.0, añadiendo soporte para U+32FF SQUARE ERA NAME REIWA. [Característica #15195]
  • Date.jisx0301, Date#jisx0301, y Date.parse de manera provisional y como extensión informal soportan la nueva era japonesa, hasta que se publique un nuevo estándar JIS X 0301. [Feature #15742]
  • Requiere compiladores que soporten C99 [Misc #15347]

Vea más detalles en el archivo NEWS o en la bitácora de cambios.

¡Estos cambios constan de 1727 archivos cambiados, 76022 inserciones(+), 60286 eliminaciones(-) desde Ruby 2.6.0!

  Los que nos traerá la inteligencia artificial en 2021

¡Disfrute programando con Ruby 2.7!

Descargas

  • https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.gzTAMAÑO: 16021286 bytesSHA1: 2fbecf42b03a9d4391b81de42caec7fa497747cfSHA256: c44500af4a4a0c78a0b4d891272523f28e21176cf9bc1cc108977c5f270eaec2SHA512: f731bc9002edd3a61a4955e4cc46a75b5ab687a19c7964f02d3b5b07423d2360d25d7be5df340e884ca9945e3954e68e5eb11b209b65b3a687c71a1abc24b91f
  • https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.zipTAMAÑO: 20283343 bytesSHA1: 7488346fa8e58203a38158752d03c8be6b1da65bSHA256: fdf25573e72e1769b51b8d541d0e1a894a5394dbfdf1b08215aa093079cca64cSHA512: b3b1f59dce94c242ef88a4e68381a4c3a6f90ba0af699083e5a1a00b0fb1dce580f057dad25571fe789ac9aa95aa6e9c071ebb330328dc822217ac9ea9fbeb3f
  • https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.bz2TAMAÑO: 14038296 bytesSHA1: f7e70cbc2604c53a9e818a2fc59cd0e2d6c859faSHA256: d45b4a1712ec5c03a35e85e33bcb57c7426b856d35e4f04f7975ae3944d09952SHA512: a36b241fc1eccba121bb7c2cc5675b11609e0153e25a3a8961b67270c05414b1aa669ce5d4a5ebe4c6b2328ea2b8f8635fbba046b70de103320b3fdcb3d51248
  • https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.xzTAMAÑO: 11442988 bytesSHA1: 45e467debc194847a9e3afefb20b11e6dc28ea31SHA256: 8c546df3345398b3edc9d0ab097846f033783d33762889fd0f3dc8bb465c3354SHA512: d416e90bfa3e49cc0675c4c13243c8ec319b7a0836add1bd16bd7662d09eaf46656d26e772ef3b097e10779896e643edd8a6e4f885147e3235257736adfdf3b5

¿Qué es Ruby?

Ruby fue desarrollado primero por Matz (Yukihiro Matsumoto) en 1993, y ahora es desarrollado como Código Abierto.Corre en múltiples plataformas y se usa en todo el mundo especialmente para desarrollo web.

Publicado por naruse el 2019-05-30
Traducción de vtamara

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad