All Versions
Latest Version
Avg Release Cycle
46 days
Latest Release
211 days ago

Changelog History
Page 6

  • v0.19.4 Changes

    October 07, 2016
    • โž• Added support for OpenBSD (thanks @wmoxam and @ysbaddaden)
    • ๐Ÿ›  More iconv fixes for FreeBSD (thanks @ysbaddaden)
    • ๐Ÿš€ Changed how require works for the upcoming shards release (this is backwards compatible). See
    • โž• Added Atomic and exposed all LLVM atomic instructions to Crystal (needed to implemented multiple-thread support)
    • โž• Added Process.executable_path (thanks @kostya, @whereami and @ysbaddaden)
    • โž• Added HTML.unescape (thanks @dukex)
    • โž• Added Char#+(Int) and Char#-(Int)
    • ๐Ÿ›  A few bug fixes
  • v0.19.3 Changes

    September 30, 2016
    • ๐Ÿš€ crystal eval now accepts some flags like --stats, --release and --help
    • โž• Added File.chown and File.chmod (thanks @ysbaddaden)
    • โž• Added (useful for doing sum) (thanks @RX14)
    • โž• Added docs to OAuth and OAuth2
    • ๐Ÿ›  Several bug fixes
  • v0.19.2 Changes

    September 16, 2016
    • Generic type variables no longer need to be single-letter names (for example class Gen(Foo) is now possible)
    • โž• Added syntax to denote free variables: def foo(x : T) forall T. The old rule of single-letter name still applies but will be removed in the future.
    • โœ‚ Removed the restriction that top-level types and constants can't have single-letter names
    • โž• Added @[Extern] attribute to mark regular Crystal structs as being able to be used in C bindings
    • ๐ŸŽ Faster Char#to_s when it's ASCII: this improves the performance of JSON and CSV parsing
    • ๐Ÿš€ crystal spec: allow passing --release and other options
    • crystal spec: allow running all specs in a given directory
    • ๐Ÿ‘ crystal playground: support custom workbook resources (thanks @bcardiff)
    • crystal playground: standard output now understands ANSI colors (thanks @bcardiff)
    • โž• Added many more macro methods to traverse AST nodes (thanks @BlaXpirit)
    • 0๏ธโƒฃ Error messages no longer include a type trace by default, pass --error-trace to show the full trace (the trace is often useless and makes it harder to understand error messages)
    • ๐Ÿ›  Several bug fixes
  • v0.19.1 Changes

    September 09, 2016
    • Types (class, module, etc.) can now be marked as private.
    • โž• Added WeakRef (thanks @bcardiff)
    • ๐Ÿ›  Several bug fixes
  • v0.19.0 Changes

    September 02, 2016
    • (breaking change) Added select keyword
    • (breaking change) Removed $global variables. Use @@class variables instead.
    • (breaking change) Heredoc now ends when the matching identifier is found, either followed by a space or by a non-identifier
    • (breaking change) Assignment to a local variable inside an assignment to that same variable is now an error
    • (breaking change) Type names like T, T1, U, etc., are now disallowed at the top level, to avoid conflicts with free variables
    • (breaking change) Type lookup (Foo::Bar::Baz) had some incorrect behaviour that now is fixed. This can break existing code that relied on this incorrect behaviour. The fix is to fully qualify types (::Foo::Bar::Baz)
    • (breaking change) In relationships like class Bar < Foo(Baz) and include Moo(Baz), all of Foo, Moo and Baz must be defined before that point (this was not always the case in previous versions)
    • (breaking change) Removed the deprecated syntax x as T
    • (breaking change) Removed block form of String#match
    • (breaking change) Removed IO#read_nonblock
    • (breaking change) Int#/ now performs floored division. Use Int#tdiv for truncated division (see their docs to learn the difference)
    • โž• Added support for LLVM 3.8 (thanks @omarroth)
    • || now does type filtering
    • Generic inheritance should now work well, and (instantiated) generic modules can now be used as the type of instance variables
    • NamedTuple can now be accessed with strings too (thanks @jhass)
    • Base64 can now encode and decode directly to an IO (thanks @kostya)
    • BigInt now uses GMP implementation of gcd and lcm (thanks @endSly)
    • ๐Ÿ‘ ECR now supports removing leading and trailing whitespace (<%-, -%>)
    • HTTP::Request#path now never returns nil: it fallbacks to "/" (thanks @jhass)
    • String#tr(..., "") is now the same as String#delete
    • ๐Ÿ‘ tool hierarchy now supports --format json (thanks @bmulvihill)
    • โž• Added Char#ascii?
    • โž• Added Class#nilable? and Union#nilable?
    • โž• Added Hash#has_value? (thanks @kachick)
    • โž• Added IO::Sized and IO::Delimited (thanks @RX14)
    • โž• Added IO::Hexdump (thanks @ysbaddaden)
    • โž• Added IO#noecho and IO#noecho! (thanks @jhass)
    • โž• Added to create a null logger
    • ๐Ÿ“œ Added OptionParser#missing_option and OptionParser#invalid_option (thanks @jhass)
    • โž• Added Process.exists?, Process#exists? and Process#terminated? (thanks @jhass)
    • โž• Added Process.exec (thanks @jhass)
    • Added Slice#copy_to, Slice#copy_from, Slice#move_to and Slice#move_from (thanks @RX14)
    • โž• Added URI#== and URI#hash (thanks @timcraft)
    • โž• Added YAML#parse(IO)
    • โž• Added Indexable module that Array, Slice, Tuple and StaticArray include
    • Added indent parameter to to_pretty_json
    • โž• Added lazy form of getter and property macros
    • โž• Added macro methods to access an ASTNode's location
    • Unified String and Char to integer/float conversion API (thanks @jhass)
    • ๐Ÿ›  Lots of bug fixes
  • v0.18.7 Changes

    July 03, 2016
    • ๐Ÿ— The compile command was renamed back to build. The compile command is deprecated and will be removed in a future version
    • Fibers now can be spawned with a name
    • ECR macros can now be required with just require "ecr"
    • ๐Ÿ›  Several bugs fixes and enhancements
  • v0.18.6 Changes

    June 28, 2016
    • ๐Ÿ“œ T? is now parsed as Union(T, Nil) outside the type grammar
    • โž• Added String#sub overloads for replacing an index or range with a char or string
    • ๐Ÿ›  Several bugs fixes
  • v0.18.5 Changes

    June 27, 2016
    • โž• Added OpenSSL::SSL::Socket#alpn_protocol
    • โž• Added IO#copy(src, desc, limit) (thanks @jreinert)
    • โž• Added TypeNode#instance macro method
    • ๐Ÿ›  Several bugs fixes
  • v0.18.4 Changes

    June 21, 2016
    • ๐Ÿ›  Fixed #2887
    • ๐Ÿ›  Fix broken specs
  • v0.18.3 Changes

    June 21, 2016