Blog tagged release

Ceylon 1.0 beta

After more than three years of development, Ceylon is now feature-complete. Ceylon 1.0 beta implements the whole language specification, providing the capability to execute Ceylon programs on both Java and JavaScript virtual machines and to interoperate with native code written for those platforms. This release includes:

  • a complete formal language specification that defines the syntax and semantics of Ceylon in language accessible to the professional developer,
  • a command line toolset including compilers for Java and JavaScript, a documentation compiler, and support for executing modular programs on the JVM and Node.js,
  • a powerful module architecture for code organization, dependency management, and module isolation at runtime, and
  • the language module, our minimal, cross-platform foundation of the Ceylon SDK.

Simultaneously, we're releasing Ceylon IDE 1.0 beta, the latest iteration of our full-featured Eclipse-based development environment.

runas

New features of the language

This release introduces the following new language features, along with many bugfixes:

  • annotations and annotation constraints,
  • a typesafe metamodel,
  • "static" method and attribute references,
  • try with resources,
  • support for strings, integers, and characters in switch,
  • support for named unicode characters in string and character literals,
  • the ** scaling multiplication operator,
  • nonempty variadic parameters, and
  • a new improved syntax for calling concrete members of inherited interfaces.

The new features are summarized here.

metamodel

New features of the IDE

This release of the IDE introduces performance improvements, many bugfixes, and:

  • support for launching Ceylon programs on the module runtime,
  • paste-with-imports, and autoindentation on paste,
  • integration with Eclipse's built-in file and package refactorings,
  • inline "linked-mode" rename, and rename support for references in documentation strings,
  • improvements to autocompletion, including "linked-mode" argument completion,
  • much improved integration for Eclipse's merge viewer,
  • integration with the commandline toolset's configuration file format,
  • several new quick fixes and assists, including new quick assists for adding and changing import aliases, and
  • a new editor preferences page.

You can see screenshots of the new release here.

autocomplete

rename

Community

The Ceylon community site includes documentation, and information about getting involved.

http://ceylon-lang.org

SDK

The platform modules, recompiled for 1.0 beta, are available in the shared community repository, Ceylon Herd.

https://herd.ceylon-lang.org

Source code

The source code for Ceylon, its specification, and its website, is freely available from GitHub:

https://github.com/ceylon

Issues

Bugs and suggestions may be reported in GitHub's issue tracker.

Acknowledgement

We're deeply indebted to the community volunteers who contributed a substantial part of the current Ceylon codebase, working in their own spare time. The following people have contributed to this release:

Gavin King, Stéphane Épardaud, Tako Schotanus, Emmanuel Bernard, Tom Bentley, Aleš Justin, David Festal, Flavio Oliveri, Max Rydahl Andersen, Mladen Turk, James Cobb, Tomáš Hradec, Michael Brackx, Ross Tate, Ivo Kasiuk, Enrique Zamudio, Roland Tepp, Diego Coronel, Brent Douglas, Corbin Uselton, Loic Rouchon, Lukas Eder, Markus Rydh, Matej Lazar, Julien Ponge, Julien Viet, Pete Muir, Nicolas Leroux, Brett Cannon, Geoffrey De Smet, Guillaume Lours, Gunnar Morling, Jeff Parsons, Jesse Sightler, Oleg Kulikov, Raimund Klein, Sergej Koščejev, Chris Marshall, Simon Thum, Maia Kozheva, Shelby, Aslak Knutsen, Fabien Meurisse, Paco Soberón, Sjur Bakka, Xavier Coulon, Akber Choudhry, Ari Kast, Dan Allen, Deniz Türkoglu, F. Meurisse, Jean-Charles Roger, Johannes Lehmann.

Ceylon M5 and Ceylon IDE M5 now available!

Ceylon M5 “Nesa Pong” is now available for download, along with a simultaneous compatible release of Ceylon IDE. This is a huge release, with the following headline features:

  • a fully-reified type system with generic type arguments available at runtime,
  • direct interoperation with native JavaScript,
  • tuples,
  • several important syntax changes in response to community feedback and practical experience, and
  • a datetime module and an HTTP server.

You can download the Ceylon command line distribution here:

http://ceylon-lang.org/download

Or you can install Ceylon IDE from our Eclipse update site.

Language features

M5 is an almost-complete implementation of the Ceylon language, including the following new features compared to M4:

In addition, the language specification and documentation have been substantially revised and improved.

The following language features are not yet supported in M5:

  • the type safe metamodel
  • user-defined annotations
  • serialization

This page provides a quick introduction to the language. The draft language specification is the complete definition.

Source code

The source code for Ceylon, its specification, and its website, is freely available from GitHub:

https://github.com/ceylon

Issues

Bugs and suggestions may be reported in GitHub's issue tracker.

Community

The Ceylon community site includes documentation, the current draft of the language specification, the roadmap, and information about getting involved.

http://ceylon-lang.org

SDK

The new platform modules are available in the shared community repository, Ceylon Herd.

https://herd.ceylon-lang.org

Acknowledgement

We're deeply indebted to the community volunteers who contributed a substantial part of the current Ceylon codebase, working in their own spare time. The following people have contributed to this release:

Gavin King, Stéphane Épardaud, Tako Schotanus, Emmanuel Bernard, Tom Bentley, Aleš Justin, David Festal, Flavio Oliveri, Max Rydahl Andersen, Mladen Turk, James Cobb, Tomáš Hradec, Michael Brackx, Ross Tate, Ivo Kasiuk, Enrique Zamudio, Roland Tepp, Diego Coronel, Brent Douglas, Corbin Uselton, Loic Rouchon, Lukas Eder, Markus Rydh, Matej Lazar, Julien Ponge, Julien Viet, Pete Muir, Nicolas Leroux, Brett Cannon, Geoffrey De Smet, Guillaume Lours, Gunnar Morling, Jeff Parsons, Jesse Sightler, Oleg Kulikov, Raimund Klein, Sergej Koščejev, Chris Marshall, Simon Thum, Maia Kozheva, Shelby, Aslak Knutsen, Fabien Meurisse, Paco Soberón, sjur, Xavier Coulon.

Ceylon M4 and Ceylon IDE M4 released!

Ceylon M4 "Analytical Engine" is now available for download, along with a simultaneous compatible release of Ceylon IDE. The compiler now implements almost all of the language specification, for both Java and JavaScript virtual machines as execution environments. New Ceylon platform modules are available in Ceylon Herd, the community module repository.

You can download the Ceylon command line distribution here:

http://ceylon-lang.org/download

Or you can install Ceylon IDE from Eclipse Marketplace or from our Eclipse update site.

Ceylon M4 and Ceylon IDE M4 require Java 7.

The Ceylon team hopes to release Ceylon 1.0 beta in January.

Language features

M4 is an almost-complete implementation of the Ceylon language, including the following new features compared to M3:

The following language features are not yet supported in M4:

  • reified generics
  • user-defined annotations, interceptors, and the type safe metamodel
  • serialization

This page provides a quick introduction to the language. The draft language specification is the complete definition.

Ceylon IDE

Ceylon IDE is a complete development environment for Ceylon, based on the Eclipse platform. This release of Ceylon IDE introduces:

  • support for JavaScript compilation and execution,
  • module import completion,
  • the brand new Ceylon Repository Explorer view,
  • support for Maven repositories, and
  • more than 30 other improvements and bug fixes.

Ceylon IDE M4 requires Java 7. Users of Ceylon IDE on Mac OS should install Eclipse Juno. Users on other platforms may run Ceylon IDE in either Eclipse Indigo or Eclipse Juno on Java 7. Ceylon IDE will not work if Eclipse is run on Java 6.

Compilation and execution on the JVM and JavaScript VMs

The Ceylon command-line tools and IDE both support compilation to either or both of the JVM or JavaScript.

Ceylon programs compiled to JavaScript execute on standard JavaScript virtual machines. The Ceylon command line distribution and IDE include a launcher for running Ceylon programs on Node.js.

Interoperation with Java

Interoperation with Java code is robust and well-tested. As usual, this release fixes several bugs that affected Java interoperation in the previous release.

Contrary to previous releases, the JDK is no longer automatically imported, so you need to import the JDK using the modularised JDK module names as defined by Jigsaw (Java 9).

Platform modules

The following new platform modules are now available in Ceylon Herd:

  • ceylon.net provides URI and HTTP support
  • ceylon.io provides charset and socket (blocking and non-blocking) support
  • ceylon.json provides JSON parsing and serialization
  • ceylon.collection collection implementations organized into mutable array-based collections, mutable hashtable-based collections and immutable linked-list based collections

The language module, ceylon.language is included in the distribution.

Modularity and runtime

The toolset and runtime for Ceylon are based around .car module archives and module repositories. The runtime supports a modular, peer-to-peer class loading architecture, with full support for module versioning and multiple repositories, including support for local and remote module repositories, using the local file system, HTTP, WebDAV, or even Maven repositories for interoperation with Java.

The shared community repository, Ceylon Herd is now online:

https://herd.ceylon-lang.org

Source code

The source code for Ceylon, its specification, and its website, is freely available from GitHub:

https://github.com/ceylon

Issues

Bugs and suggestions may be reported in GitHub's issue tracker.

Community

The Ceylon community site includes documentation, the current draft of the language specification, the roadmap, and information about getting involved.

http://ceylon-lang.org

Acknowledgement

We're deeply indebted to the community volunteers who contributed a substantial part of the current Ceylon codebase, working in their own spare time. The following people have contributed to this release:

Gavin King, Stéphane Épardaud, Tako Schotanus, Emmanuel Bernard, Tom Bentley, Aleš Justin, David Festal, Flavio Oliveri, Max Rydahl Andersen, Mladen Turk, James Cobb, Tomáš Hradec, Michael Brackx, Ross Tate, Ivo Kasiuk, Enrique Zamudio, Julien Ponge, Julien Viet, Pete Muir, Nicolas Leroux, Brett Cannon, Geoffrey De Smet, Guillaume Lours, Gunnar Morling, Jeff Parsons, Jesse Sightler, Oleg Kulikov, Raimund Klein, Sergej Koščejev, Chris Marshall, Simon Thum, Maia Kozheva, Shelby, Aslak Knutsen, Fabien Meurisse, Paco Soberón, sjur, Xavier Coulon.

Ceylon IDE M3.2 released

Gavin, Sjur and Tomáš have been hard at work all summer to deliver a much-improved version of the Ceylon IDE. This release support exactly the same language constructs and features the same JVM backend compiler as the M3.1 release, so it's 100% compatible with it. But while the backend is the same, the UI is much improved, as you can see from the following change log and screen shots.

No more dependence on IMP

We recommend removing IMP from your Eclipse installation.

Ceylon Explorer view

The Ceylon Explorer View presents packages as children of the containing modules. You should reset your Ceylon Perspective after updating the IDE on order to get the Ceylon Explorer in place of JDT's Package Explorer.

Awesome documentation hover

Hover over the name of a Ceylon or Java declaration to see the gorgeous new hover info. Click in it to browse to other related declarations.

Code popup

Ctrl-P, or "Show Code" pops up an information control containing the code of the referenced declaration. Ctrl-P again opens an editor. Hyperlink navigation from the Code popup is also possible.

Hierarchy and Outline popups

As before, Ctrl-T and Ctrl-O open the popup Hierarchy and Outline views. These now look a lot prettier, and they are also more functional. You can filter the contents by typing inside them, and they remember their bounds. The Hierarchy View is also much better integrated with Java stuff. Ctrl-T inside the open Hierarchy View cycles between Hierarchy View, Supertypes View, and Subtypes View. These popups have configurable background colors.

Auto-addition of needed imports

Refactorings, quick fixes, and autocompletions now add any needed imports to the top of the source file. In addition, autocompletion will propose declarations from any imported module, even if the package is not imported in the current unit.

New Quick Fixes/Assists

Thanks to Sjur and Tomáš, we now have some new quick fixes and assists:

  • convert if/else to then/else, then/else to if/else
  • invert if/else
  • add type constraint to type parameter

Clean Imports

Clean Imports now automatically fills in missing imports if unambiguous, and prompts the user to choose a declaration to import if ambiguous.

Terminate Statement

Ctrl-2 adds any necessary semicolon, closing parens, and closing braces to terminate the statement at the current line. This feature is almost magical in how good it is at guessing where the closing punctuation needs to go.

Mark occurrences

Occurrence marking is now enabled by default and works like JDT (the declaration to highlight is the one under the caret).

Proposals popups

Completions proposals and quick fix/assist proposal popups now have syntax highlighting. Typing a "." automatically activates the completion proposal window. When only one completion proposal is available, it is automatically applied.

Select Enclosing/Restore Previous Selection

Ctrl-shift-up expands the selection to the containing expression or program element. Ctrl-shift-down takes you back to the previous selection.

Also Ctrl-Shift-P takes you to the matching bracket and Show In now works.

Outline View

There is now a popup context menu on Outline View nodes. The selected node now follows the editor caret location.

Tomáš added a toolbar to the Outline View, letting you filter out local declarations and expand/collapse all nodes.

Open Ceylon Declaration / Open Type

The default keyboard binding for Open Ceylon Declaration is now Ctrl-Shift-O instead of Ctrl-Shift-C. This is more ergonomic and works even inside the Java editor. Inside the Ceylon perspective, Ctrl-Shift-T opens the Open Type dialog, which lets you choose between Ceylon and Java types in one dialog (a very slow-to-load dialog, but hey...).

F3 (Open Selected Declaration) now handles Java declarations.

Support for multiple module repositories

The New Project wizard and Ceylon Preferences page now let you configure multiple module repositories for a project.

Backend errors

Errors from the compiler backend now show up in the Problems View and vertical ruler, and compiler progress is visible in the Progress View and status bar. The 80s-style scrolling console is gone.

Progress

Building the completion proposals and hierarchy for the first time is now expensive because it involves trawling the whole JDK. You get a nice progress bar in the status bar of the main window.

Parser lifecycle

Code is lexed/parsed synchronously on every keypress, and lexed/parsed+typechecked synchronously on every keypress when the completions proposals window is open. This results in much more responsive syntax highlighting and fixes some wierd behavior in the completion proposals window. When the completions proposal window is not open, typechecking still happens in a background job as before.

Download it today

The Ceylon IDE is available today from our update site or from Eclipse Marketplace:

Ceylon IDE Eclipse Indigo drag and drop into a running Eclipse workspace

After installing, go to Help > Welcome to Ceylon to get started.

Ceylon and Ceylon IDE updated to M3.1

Ceylon M3.1 is now available for download, along with a simultaneous compatible release of Ceylon IDE. This release fixes several bugs in the recent M3 release of Ceylon, and introduces several enhancements.

To the Ceylon language module:

  • a whole suite of new operations for working with iterable objects and collections.

And to Ceylon IDE:

  • major improvements to the builder in Ceylon IDE, incorporating performance enhancements and better support for multi-project builds and for intercompilation of Ceylon with Java, and
  • cross-project refactoring.

Ceylon M3.1 is otherwise compatible with M3.

You can download the Ceylon command line distribution here:

http://ceylon-lang.org/download

Or you can install Ceylon IDE from Eclipse Marketplace or from our Eclipse update site.

Ceylon M3.1 and Ceylon IDE M3.1 require Java 7.

Source code

The source code for Ceylon, its specification, and its website, is freely available from GitHub:

https://github.com/ceylon

Issues

Bugs and suggestions may be reported in GitHub's issue tracker.

Community

The Ceylon community site includes documentation, the current draft of the language specification, the roadmap, and information about getting involved.

http://ceylon-lang.org

Acknowledgement

We're deeply indebted to the community volunteers who contributed a substantial part of the current Ceylon codebase, working in their own spare time. The following people have contributed to this release:

Gavin King, Stéphane Épardaud, Tako Schotanus, Emmanuel Bernard, Tom Bentley, Aleš Justin, David Festal, Flavio Oliveri, Max Rydahl Andersen, Mladen Turk, James Cobb, Tomáš Hradec, Michael Brackx, Ross Tate, Ivo Kasiuk, Enrique Zamudio, Julien Ponge, Julien Viet, Pete Muir, Nicolas Leroux, Brett Cannon, Geoffrey De Smet, Guillaume Lours, Gunnar Morling, Jeff Parsons, Jesse Sightler, Oleg Kulikov, Raimund Klein, Sergej Koščejev, Sjur Bakka, Chris Marshall, Simon Thum, Maia Kozheva, Shelby.