Red Hat



In Relation To Gavin King

In Relation To Gavin King

Free Ceylon conference in Paris

Posted by Gavin King    |       |    Tagged as Ceylon

To celebrate the recent release of Ceylon 1.0, we're putting on a one-day free conference in Paris on Friday, January 24.

The format of the conference is:

  • a morning of short presentations about different bits of the Ceylon ecosystem, followed by
  • a hands-on Ceylon programming workshop in the afternoon.

Almost the whole Ceylon team will be present, since we're having a four-day team meeting prior to the conference day. So if you have any questions about Ceylon, or if you want to bend our ears on some pet topic, this is your chance.

You can see the conference program, and sign up for the conference here.

P.S. If you're coming to the conference, or even if you're not, please feel very welcome to join the team for drinks on Thursday night.

Ceylon 1.0 beta now available!

Posted by Gavin King    |       |    Tagged as Ceylon

It's been a long three years since my first posts on this site describing our ideas for the Ceylon language. Now, finally, Ceylon 1.0 is feature complete. From the announcement on ceylon-lang.org:

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.

The team has now switched into bug-fix/performance-enhancement mode, as we prepare for a final release.

Yeah, yeah, three years is a long time, and it's taken longer than I had hoped to get to a 1.0 release. OTOH, we're releasing a lot more than I had expected to have for 1.0. I never imagined that we would have stuff like Ceylon Herd and the IDE ready for Ceylon 1.0.

We have a great little community working on Ceylon development, and I would like to welcome you guys to join us over there, now that we're ready for people to really start making use of Ceylon in their projects!

Ceylon M4 released

Posted by Gavin King    |       |    Tagged as Ceylon

In case you missed it, we just released the fourth milestone of Ceylon and Ceylon IDE. The next release will be the feature-complete Ceylon 1.0 beta, now due in January. We've also pushed a major update to Ceylon Herd.

This is the first release of Ceylon IDE to include complete support for compilation to JavaScript and execution on Node.js.(Since M3, the Ceylon compiler has offered the option of compiling a Ceylon module to a CommonJS module) I personally love being able to write a snatch of Ceylon code and then watch it execute on both the JVM and Node, all from directly within Eclipse.

Another cool new features of the language is the assert statement. If assertions doesn't sound that cool or new to you, then I bet you have not yet seen Ceylon's unique spin on the concept. You can read more about it at the Ceylon blog.

(P.S. I'm now mostly blogging over at the Ceylon site, and on Google plus, but I'll still post items here from time to time.)

Ceylon M2 "Minitel" released

Posted by Gavin King    |       |    Tagged as Ceylon

This is the second release of the Ceylon compiler and other command line tools.

You can read Stef's announcement here at the Ceylon blog. The major new features are:

  • Java interoperability
  • enumerated/algebraic types and switch/case
  • first-class and higher-order functions
  • support for remote module repositories and Maven repositories

Try it out!

A huge thanks to the Ceylon team for getting this release done on schedule while I've been taking a break from development! Thanks so much!

Trying out Ceylon's Java interop

Posted by Gavin King    |       |    Tagged as Ceylon

Great, I'm finally able to write, compile, and run Ceylon code that uses Java libraries from within Ceylon IDE:

import java.lang { System { sysprops=properties } }
import java.util { Date }

void greet() {
    value date = Date();
    print("Hello, " sysprops.getProperty("user.name", "world") 
          ", the date is " date.day "/" date.month "/" 1900+date.year ".");
}

This doesn't look like much, perhaps, but it's demonstrating some important features of the interoperability:

  1. the ability to map a Java static declaration to a toplevel declaration in Ceylon,
  2. the ability to resolve an invocation to the correct overloaded version,
  3. the equivalence between Java primitive types and java.lang.String and Ceylon types in ceylon.language, and
  4. the automatic mapping of JavaBeans properties to Ceylon attributes.

Here's a second working example:

import java.lang { System { sysprops=properties } }
import java.io { File }

void listHomeDir() {
    for (file in File(sysprops.getProperty("user.home")).listFiles()) {
        print(file.canonicalPath);
    }
}

Java interop has been a somewhat tricky problem for us because Ceylon's type system is somewhat different to Java's, and because the design of Ceylon's language module isn't really based on the Java SDK. When running on the Java VM, the language module does make use of the Java SDK as part of its internal implementation. But when running on a JavaScript VM, it can't, of course. So we have to limit our dependence upon JVM-specific stuff.

We've still got a few things to finish off here. For example, our treatment of arrays and Java Iterables is not completely finished, and some IDE features still aren't working quite right, but I think most of the hard work is already done, ready for release as part of Ceylon M2.

Good work guys!

Ceylon IDE M1 release

Posted by Gavin King    |       |    Tagged as Ceylon

The first official public release of the Ceylon IDE is out! You can read David's announcement here.

Teaser image

This is a full-featured development environment for Ceylon, with I guess everything you use regularly in your Java IDE, including interactive error reporting, incremental build, syntax highlighting, proposals, quick fixes, refactoring, searching, wizards, hover help, debugging, and much more. It even has a major feature that your Java IDE doesn't have: deep integration with Ceylon's module and module repository architecture. (No more futzing with the project build path!)

Check out the feature list, and some screenshots. Then try it out from our update site.

I'll have more to say about how we were able to engineer an entire professional IDE for a new language in less than 6 months with two part-time developers in a future post.

Once again: thanks to David Festal for all his hard work, and to SERLI for their support.

Ceylon M1 "Newton" released

Posted by Gavin King    |       |    Tagged as Ceylon

The first release of the Ceylon command line tools is finally available!

Quoting from the release announcement:

Today, we're proud to announce the release of Ceylon M1 "Newton". This is the first official release of the Ceylon command line compiler, documentation compiler, language module, and runtime, and a major step down the roadmap toward Ceylon 1.0. ...

In terms of the language itself, M1 has essentially all the features of Java except enumerated types, user-defined annotations, and reflection. It even incorporates a number of improvements over Java ...

The toolset and runtime for Ceylon is 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.

You can download it right here.

An official M1 release of the Ceylon IDE is on its way.

You can read more about the Ceylon programming language in the Quick Introduction.

Huge thanks to everyone who worked so hard to make this release happen.

Ceylon en Mexico, DF

Posted by Gavin King    |       |    Tagged as Ceylon

Los de JavaMéxico me han invitado a presentar Ceylon en el DF, el 17 de diciembre. (Será la primera vez que intento hablar de technologia en español y estoy temblando.)

Fun wildcard-related problem in Java's typesystem

Posted by Gavin King    |       |    Tagged as

Haha! Try compiling this Java code:

interface Interface<T> {}
class Bang<T> implements Interface<Interface<? super Bang<Bang<T>>>> {

    static void bang() {
        Interface<? super Bang<Byte>> bang = new Bang<Byte>();
    }
        
}

(For me, the compiler stackoverflows, and Eclipse asks for my permission to crash.)

I'm not sure how widely known this problem is. It's not really a bug in the compiler, more like a bug in Java's type system. I found out about it from this excellent paper, which also proposes a solution to the problem, but the paper appears to build on work in this other paper, which I'm also linking because I'm a big fan of Stefan Wehr's work on JavaGI.

UPDATE: Here's another paper dealing with this issue, this time from Microsoft guys.

And, in case you're wondering, yeah, I can make the Ceylon typechecker stackoverflow with the equivalent code:

interface Interface<in T> {}
class Bang<T>() satisfies Interface<Interface<Bang<Bang<T>>>> {}
void bang() {
    Interface<Bang<String>> bang = Bang<String>();
}

I guess ima gunna get right on to implementing the solution proposed in Tate et al.

Everything that's wrong with the post-Java-language debate in one easy blog post

Posted by Gavin King    |       |    Tagged as

This is a gorgeous, perfect example of precisely how not to engage in debate over technical issues. I won't respond point-by-point, because the post is mainly self-refuting, but it does amuse me to highlight the following:

  • Vague accusations of dishonesty in the title, which are never actually supported in the post itself.
  • The claim that projects which were announced to the community approximately three months ago are vaporware. (That's the fastest progression from announcement to vapor in history!)
  • The absurd accusation that people working an alternatives to Java have a secret ulterior motive to actually reinforce the status quo. Yes, seriously.
  • Further unsupported accusations of intellectual dishonestly, though it's not precisely clear on whose part.
  • Misattribution / invention of staw man arguments. (To the best of my knowledge none of the teams advocating alternative JVM languages have ever claimed that Scala is too academic or too functional or not functional enough.)
  • Insults directed at the entire Java programmer community.
  • No actual substantive technical arguments for or against any particular language.

The most ironic thing about this amazingly incivil flamebait post, is that after throwing around accusations of dishonestly and secret agendas, the poster (can't be bothered checking his name) writes:

If you plan to comment, keep in mind that your comment should be constructive and civilized.

Wow. I guess he at least deserves credit for chutzpah. :-)

(I'm closing comments since I can't be bothered responding to the inevitable trolls.)

P.S. Accusations of dishonesty, or of misinformation (which, in case English is your second language, means deliberate lying) have been a recurring theme lately. You guys need to put that one to rest. It's not reasonable to call someone a liar because you disagree with them.

back to top