All Versions
103
Latest Version
Avg Release Cycle
52 days
Latest Release
86 days ago

Changelog History
Page 8

  • v0.7.5 Changes

    July 30, 2015
    • (breaking change) 0 is not a prefix for octal numbers anymore. Use 0o
    • (breaking change) Renamed MissingKey to KeyError
    • (breaking change) Renamed IndexOutOfBounds to IndexError
    • ๐Ÿ›  Fixed all exception-handling related bugs.
    • ๐Ÿ‘ Allow nested and multiline ternary expressions (thanks @daviswahl)
    • ๐Ÿ‘ Allow assigning to _ (underscore), give error when trying to read from it
    • Macros can now also receive the following nodes: And, Or, Case, RangeLiteral and StringInterpolation. And and Or have left and right methods.
    • โž• Added -e option to hierarchy command to filter types by a regex
    • โž• Added -v as an alias of --version
    • โž• Added -h as an alias of --help
    • โž• Added Array#transpose (thanks @rhysd)
    • โž• Added Benchmark#ips (thanks @will)
    • โž• Added Hash#merge(&block) and Hash#merge!(&block) (thanks @yui-knk)
    • โž• Added Hash#invert (thanks @yui-knk)
    • โž• Added Bool#^ (thanks @yui-knk)
    • Added Enumerable#drop, Enumerable#drop_while and Enumerable#take_while (thanks @PragTob)
    • โž• Added Enumerable#none? (thanks @yui-knk)
    • โž• Added Set#subset?, Set#superset? and Set#intersects? (thanks @yui-knk)
    • โž• Added Set#new(Enumerable) (thanks @yui-knk)
    • โž• Added String#succ (thanks @porras and @Exilor)
    • โž• Added Array#* (thanks @porras)
    • โž• Added Char#===(Int) and Int#===(Char) (thanks @will)
    • โž• Added StringLiteral#camelcase and StringLiteral#underscore in macros
    • โž• Added Expressions#expressions in macros
    • โž• Added Cast#obj and Cast#to in macros
    • โž• Added ASTNode#class_name in macros (thanks @yui-knk)
    • โž• Added Array#push/Array#<< and Array#unshift in macros (thanks @ysbaddaden)
    • โž• Added Def#visibility in macros (thanks @ysbaddaden)
    • โž• Added String#codepoints and String#each_codepoint (thanks @jhass)
    • ๐Ÿ‘ Char#to_i(base) now supports bases from 2 to 36
    • Set#| now correctly accepts a set of a possible different type (thanks @yui-knk)
    • Flush STDERR on exit (thanks @jbbarth)
    • HTTP::Client methods accept an optional block, which will yield an HTTP::Response with a non-nil body_io property to consume the response's IO
    • Document URI, UDPSocket (thanks @davydovanton)
    • ๐Ÿ‘Œ Improved URI class (thanks @will)
    • Define $~ in String#gsub and String#scan
    • Define $? in Process.run
    • ๐Ÿ›  Lots of bug fixes and small improvements
  • v0.7.4 Changes

    June 23, 2015
    • โž• Added Float module and remainder (thanks @wmoxam)
    • ๐Ÿ‘‰ Show elapsed time in HTTP::LogHandler (thanks @zamith for the suggestion)
    • โž• Added 0o as a prefix for octal numbers (thanks @asb)
    • ๐Ÿ‘ Allow spaces before the closing tag of a heredoc (thanks @zamith)
    • String#split(Regex) now includes captures in the results
    • Added union?, union_types and type_params in macro methods
    • ๐Ÿ‘Œ Improved MatchData#to_s to show named groups (thanks @will)
    • โšก๏ธ Optimized Base64 encode/decode (thanks @kostya)
    • โž• Added basic docs for spec (thanks @PragTob)
    • โž• Added docs for Benchmark (thanks @daneb)
    • โž• Added ARGF
    • Non-matching regex captures now return nil instead of an empty string (thanks @will)
    • โž• Added $1?, $2?, etc., as a nilable alternative to $1, $2, etc.
    • โž• Added user, password, fragment and opaque to URI (thanks @will)
    • HTTP::Client.exec now honors user/password info from URI
    • 0๏ธโƒฃ Set default user agent in HTTP::Client
    • โž• Added String#chop
    • ๐Ÿ›  Fixed crystal deps behaviour with empty git repositories (thanks @tkrajcar)
    • โšก๏ธ Optimized HTTP::Headers and HTTP::Request parsing.
    • ๐Ÿ”€ FileDescriptorIO (superclass of File and Socket) has now buffering capabilities (use sync= and sync? to turn on/off). That means there's no need to use BufferedIO for these classes anymore.
    • ๐Ÿ‘ Allow pointerof with class and global variables, and also [email protected] access
    • ๐ŸŽ Optimized fibers performance.
    • โž• Added inline assembly support.
    • ๐Ÿ”ง The .crystal cache dir is now configurable with an ENV variable (thanks @jhass)
    • Generic type variables names can now also be a single letter followed by a digit.
  • v0.7.3 Changes

    June 07, 2015
    • Added Tuple.from_json and Tuple.to_json
    • ๐Ÿ—„ The method_missing macro now accepts a 1 argument variant that is a Call node. The 3 arguments variant will be deprecated.
    • ๐Ÿ–จ Flush STDOUT at program exit (fixes print not showing any output)
    • Added Time#to_utc and Time#to_local (thanks @datanoise)
    • Time comparison is now correct when comparing local vs. utc times
    • ๐Ÿ‘Œ Support timezone offsets in Time parsing and formatting
    • โž• Added IO#gets(delimiter : String)
    • โž• Added String#chomp(Char) and String#chomp(String)
    • ๐Ÿ‘ Allow invoking debug() inside a macro to see what's being generated.
    • ๐Ÿ–จ IO#puts and IO#print now receive a splat (thanks @rhysd)
    • โž• Added Process.kill and Process.getpgid (thanks @barachy)
    • ๐Ÿšฆ Signal is now an enum. Use it like Signal::INT.trap { ... } instead of Signal.trap(Signal::INT) { ... }
    • โž• Added CSV.each_row (both in block and iterator forms)
    • ๐Ÿ›  Important fixes to non-blocking IO logic.
  • v0.7.2 Changes

    May 26, 2015
    • ๐Ÿ‘Œ Improved performance of Regex
    • ๐Ÿ›  Fixed lexing of octal characters and strings (thanks @rhysd)
    • ๐Ÿ“œ Time.parse can return UTC times (thanks @will)
    • ๐Ÿ– Handle dashes in crystal init (thanks @niftyn8)
    • Generic type variables can now only be single letters (T, U, A, B, etc.)
    • ๐Ÿ‘Œ Support %x and %X in sprintf (thanks @yyyc514)
    • โšก๏ธ Optimized Int#to_s (thanks @yyyc514)
    • โž• Added upcase option to Int#to_s, and use downcase by default.
    • ๐Ÿ›  Improved String#to_i and fixed the many variants (to_i8, to_u64, etc.)
    • โž• Added Time.at (thanks @jeromegn)
    • โž• Added Int#upto, Int#downto, Int#to iterators.
    • โž• Added Iterator#cons and Enumerable#each_cons (thanks @porras)
    • โž• Added Iterator.of, Iterator#chain and Iterator#tap.
    • ๐Ÿ‘ Allow top-level private macro (similar to top-level private def)
    • ๐ŸŽ Optimized BufferedIO writing performance and memory usage.
    • โž• Added Channel#close, Channel#closed?, Channel#receive? and allow them to send/receive nil values (thanks @datanoise).
    • ๐Ÿ›  Fixed Process#run after introducing non-blocking IO (thanks @will)
    • Tuple#map now returns a Tuple (previously it returned an Array)
    • Tuple#class now returns a proper Class (previously it returned a Tuple of classes)
    • ๐Ÿ›  Lots of bug fixes.
  • v0.7.1 Changes

    April 30, 2015
    • ๐Ÿ›  Fixed #597.
    • ๐Ÿ›  Fixed #599.
  • v0.7.0 Changes

    April 30, 2015
    • 0๏ธโƒฃ Crystal has evented IO by default. Added spawn and Channel.
    • ๐Ÿ‘ Correctly support the X86_64 and X86 ABIs. Now bindings to C APIs that pass and return structs works perfectly fine.
    • โž• Added crystal init to quickly create a skeleton library or application (thanks @waterlink)
    • โž• Added --emit flag to the compiler. Now you can easily see the generated LLVM IR, LLVM bitcode, assembly and object files.
    • โž• Added --no-color flag to suppress color output, useful for editor tools.
    • โž• Added macro vars: %var and %var{x, y} create uniqely named variables inside macros.
    • โž• Added typed splats.
    • โž• Added Iterator and many methods that return iterators, like Array#each, Hash#each, Int#times, Int#step, String#each_char, etc.
    • โž• Added sprintf and improved String#% to support floats and float formatting.
    • โž• Added more variants of String#gsub.
    • โž• Added Pointer#clear and use it to clear an Array's values when doing pop and other shrinking methods.
    • โž• Added BigInt#to_s(base), BigInt::cast and bit operators (thanks @Exilor)
    • ๐Ÿ‘ Allow invoking methods on a union class as long as all types in the union have it.
    • ๐Ÿ‘ Allow specifying a def's return type. The compiler checks the return type only for that def for now (not for subclasses overrding the method). The return type appears in the documentation.
    • ๐Ÿ‘ Allow constants and computed constants for a StaticArray length.
    • ๐Ÿ‘ Allow class vars in enums.
    • ๐Ÿ‘ Allow private and protected defs in enums.
    • ๐Ÿ‘ Allow reopening a lib and adding more @[Link] attributes to it, even allowing duplicated attributes.
    • ๐Ÿ‘ Allow getting a function pointer to a lib fun without specifying its types (i.e. ->LibC.getenv)
    • ๐Ÿ‘ Allow specifying ditto for a doc comment to reuse the previous comment.
    • ๐Ÿ”„ Changed the semantic of %: previously it meant remainder, not it means modulo, similar to Ruby and Python. Added Int#remainder.
    • #to_s and #inspect now work for a union class.
    • Spec: added global before_each and after_each hooks, which will simplify the use of mocking libraries like timecop.cr and webmock.cr.
    • Range(T) is now Range(B, E) again (much more flexible).
    • ๐Ÿ‘Œ Improved Regex performance.
    • ๐Ÿ‘ Better XML support.
    • ๐Ÿ‘Œ Support LLVM 3.6.
    • ๐Ÿ‘ป Exception class is now shown on unhandled exceptions
    • The following types are now disallowed in generics (for now): Object, Value, Reference, Number, Int and Float.
    • ๐Ÿ›  Lots of bug fixes, enhancements and optimizations.
  • v0.6.1 Changes

    March 04, 2015
    • The class method now works in all cases. You can now compare classes with == and ask their hash value.
    • Block variables can now shadow local variables.
    • Range(B, E) is now Range(T).
    • Added Number::[]. Now you can do Int64[1, 2, 3] instead of [1_i64, 2_i64, 3_u64].
    • ๐Ÿ‘ Better detection of nilable instance variables, and better error messages too.
    • โž• Added Crypto::Blowfish (thanks @akaufmann)
    • โž• Added Matrix (thanks @Exilor)
    • โž• Added CallConvention attribute for funs.
    • Macros: added constants so you can inspect a type's constants at compile time.
    • Macros: added methods, which lists a type's methods (without including supertypes).
    • Macros: added has_attribute? for enum types, so you can check if an enum has the Flags attribute on it.
    • ๐Ÿ›  Many more small additions and bug fixes.
  • v0.6.0 Changes

    February 12, 2015
    • Same as 0.5.10
  • v0.5.10 Changes

    February 12, 2015
    • Note: This release makes core, breaking changes to the language, and doesn't work out of the box with its accompanying standard library. Use 0.6.0 instead.
    • ๐Ÿ‘Œ Improved error messages related to nilable instance variables.
    • The magic variables $~ and $? are now method-local and concurrent-safe.
    • Tuple is now correctly considered a struct
    • Pointer is now correctly considered a struct
    • ๐Ÿ“‡ Renamed Function to Proc
  • v0.5.9 Changes

    February 07, 2015
    • 0๏ธโƒฃ Random is now a module, with static methods that default to the Random::MT19937 class.
    • โž• Added Random::ISAAC engine (thanks @ysbaddaden!)
    • โž• Added String#size (thanks @zamith!)
    • โž• Added limit to all String#split variants (thanks @jhass!)
    • Raising inside a Thread is now rescued and re-raised on join (thanks @jhass!)
    • โž• Added path option to Projectfile for crystal deps (thanks @naps62!)
    • ๐Ÿง Many fixes towards making Crystal work on linux 32 bits.
    • โ™ป๏ธ Huge refactors, additions and improvements for sockets: Socket, IPSocket, TCPSocket, TCPServer, UDPSocket, UNIXSocket, UNIXServer (thanks @ysbaddaden!)
    • ๐Ÿ‘ Allow regex with empty spaces in various places.
    • โž• Added HTML.escape(String) (thanks @naps62!)
    • โž• Added support for %w[...], %w{...}, %w<...> as alternatives to %w(...). Same goes for %i(...) (thanks @zamith!)
    • Added Enumerable#min_of, Enumerable#max_of and Enumerable#minmax_of, Enumerable#to_h, Dir.chdir and Number#fdiv (thanks @jhass!)
    • โž• Added String#match, String#[], String#[]? and MatchData#[]? related to regexes (thanks @jhass!)
    • ๐Ÿ‘ Allow T::Bar when T is a generic type argument.
    • โž• Added subclasses and all_subclasses in macros.
    • Now you can invoke to_s and inspect on C structs and unions, making debugging C bindings much easier!
    • Added #to_f and #to_i to Time and TimeSpan (thanks @epitron!)
    • โž• Added IO.select (thanks @jhass!)
    • Now you can use ifdef inside C structs and unions.
    • โž• Added include inside C structs, to include other struct fields (useful for composition and avoiding an explicit indirection).
    • โž• Added Char#in_set?, String#count, String#delete and String#squeeze (thanks @jhass!)
    • โž• Added -D flag option to the compiler to set compile-time flags to use in ifdef.
    • ๐Ÿ‘ More support for forward declarations inside C libs.
    • Rewritten some Function primitives in Crystal itself, and added methods for obtaining the pointer and closure data, as well as for recreating a function from these.
    • โž• Added a Logger class (thanks @ysbaddaden!)
    • ๐Ÿ›  Lots of bugs fixed.