Controllo dell’output di inspect
Quando si utilizza inspect per il debugging, spesso vengono mostrate variabili interne usate per memoization o caching.
Ruby 4.0 introduce il metodo instance_variables_to_inspect, che consente di controllare quali variabili di istanza includere nell’output.
def instance_variables_to_inspect
[:@width, :@height]
end
In questo modo l’output di inspect può essere reso più pulito e focalizzato sullo stato principale dell’oggetto.
Set diventa una core class
La classe Set è stata promossa da libreria standard a core class.
Questo significa che non è più necessario importarla manualmente con:
require 'set'
Inoltre il metodo inspect restituisce ora un formato più leggibile e compatibile con eval.
Va segnalato che SortedSet è stato rimosso e può essere utilizzato tramite la gem sorted_set.
Pathname integrato nel core
Anche Pathname è stato promosso a core class.
Questo miglioramento elimina la necessità di gestire la gem separatamente e consente una migliore integrazione con il resto dell’ecosistema Ruby.
Miglioramenti a source_location
Il metodo source_location è stato esteso e ora restituisce cinque valori invece di due:
[path, start_line, start_column, end_line, end_column]
Questa informazione aggiuntiva è particolarmente utile per:
- strumenti di analisi del codice
- debugger
- IDE e editor avanzati
Miglioramenti alle stringhe
Il metodo String#strip e le sue varianti ora accettano argomenti per specificare quali caratteri rimuovere.
text.strip(" ", "\t", "\n")
Questo rende l’operazione di pulizia delle stringhe più flessibile.
Nuovi metodi matematici
Ruby 4.0 introduce anche due nuove funzioni nel modulo Math:
Math.log1pMath.expm1
Queste funzioni permettono calcoli più precisi per valori molto piccoli, particolarmente utili in contesti scientifici o finanziari.
Altri cambiamenti rilevanti
Tra le altre novità introdotte nella nuova versione troviamo:
*nilnon invoca piùnil.to_aIO.selectsupportaFloat::INFINITYcome timeoutFile::Stat#birthtimeora funziona anche su LinuxSocket.tcpsupporta il parametroopen_timeout- aggiunti
Ractor#joineRactor#value - rimozione di RJIT
- aggiornamento del supporto Unicode alla versione 17
Conclusioni
Ruby 4.0 rappresenta un passo importante nell’evoluzione del linguaggio. Le novità principali si concentrano su:
- miglioramenti delle performance
- evoluzione del parallelismo
- strumenti migliori per debugging e sviluppo
Grazie alla buona compatibilità con le versioni precedenti, l’aggiornamento dovrebbe essere relativamente semplice per la maggior parte dei progetti esistenti.
Con queste novità, Ruby continua a evolversi mantenendo il suo obiettivo storico: rendere la programmazione più semplice, espressiva e produttiva.

