crystal v0.7.7 Release Notes
Release Date: 2015-09-05 // over 8 years ago-
- (breaking change) Reimplemented
Process.run
to allow configuring input, output and error, as well as behaving well regarding non-blocking IO (thanks @technorama) - (breaking change) Removed the
alias_method
macro. - (breaking change) Disallow declaring defs, classes and other declarations "dynamically" (for example inside an
if
... this of course didn't work, but incorrectly compiled). - (breaking change)
require
is now only allowed at the top-level, never inside other types or methods. - (breaking change) Removed
Nil#to_i
- (breaking change) Changed API of
Channel#select
toward a thread-safe one. - (breaking change) The two methods that IO must implement are now
read(slice : Slice(UInt8))
andwrite(slice : Slice(UInt8))
. - 🆕 New beautiful, searchable and more functional API docs. Thanks @rosylilly for the initial design, and @BlaxPirit for some improvements.
- 🚚 CLI: Moved
browser
,hierarchy
andtypes
tocrystal tool ...
- ➕ Added
crystal tool context
andcrystal tool implementations
for IDEs (thanks @bcardiff!!) Int#>>(amount)
andInt#<<(amount)
now give zero whenamount
is greater than the number of bits of the integer representation.- ➕ Added
\%
escape sequence inside macros. - ➕ Added aliases for the many C types (thanks @BlaxPirit)
- Added
Iterator#in_groups_of
(thanks @PragTob) - Added optional
offset
argument toHash#each_with_index
(thanks @sergey-kucher) - Added
Array#combinations
,Array#each_combination
,Array#repeated_combinations
,Array#each_repeated_combination
,Array#repeated_permutations
,Array#each_repeated_permutation
,Array.product
andArray.each_product
(thanks @kostya) - ➕ Added
Array#rotate
andArray#rotate!
(thanks @kostya) - Added
MatchData#pre_match
andMatchData#post_match
(thanks @bjmllr) - ➕ Added
Array#flatten
- ➕ Added
Range.reverse_each
, along withInt#pred
andChar#pred
(thanks @BlaxPirit) - ➕ Added
XML.parse_html
(thanks @ryanworl) - ➕ Added
ENV.keys
andENV.values
(thanks @will) - ➕ Added
StaticArray==(other : StaticArray)
(thanks @tatey) - ➕ Added
String#sub
in many variants (thanks @jhass) - Added
Readline.bind_key
,Readline.unbind_key
,Readline.done
andReadline.done=
(thanks @daphee) - ➕ Added
Hash#all?
,Hash#any?
andHash#inject
(thanks @jreinert) - ➕ Added
File#pos
andFile#pos=
- Added
Enum.from_value
andEnum.from_value?
- ➕ Added
Deque
(thanks @BlaxPirit) - ➕ Added lots of methods to
StringScanner
, and documented it, making it usable (thanks @will) StringIO
now quacks like aFile
.- 👍 Allow sending masked data through a
WebSocket
, and sending long data (thanks @kumpelblase2) File.new
now accepts an optionalperm
argument (thanks @technorama)- 🔧
FileDescriptorIO
now has configurable read/write timeouts (thanks @technorama) - 🚦 Signal handling is more robust and allows any kind of code (thanks @technorama)
- Correctly handle
WebSocket
close packet (thanks @bebac) - 👀 Correctly implement
seek
andtell
in buffered IOs (thanks @lbguilherme) - 👍 Allow setting several options on sockets (thanks @technorama)
- Some improvements to
crystal init
for the "app" case (thanks @krisleech) sleep
and IO timeouts can receiveTimeSpan
as arguments (thanks @BlaxPirit)- 🖐 Handle
HTTP::Response
without content-length (thanks @lbguilherme) - ➕ Added docs for OptionParser, ENV, Regex, Enumerable, Iterator and some Array methods (thanks @porras, @will, @bjmllr, @PragTob, @decioferreira)
- 🛠 Lots of bug fixes and small improvements
- (breaking change) Reimplemented