Tuesday, May 21, 2013

Strong Dart presence at Google I/O 2013

Google I/O 2013 was a breakout event for Dart. The conference featured three well attended Dart talks, a Dart code lab, and a crowded Dart booth.


Seth Ladd interviews Lars Bak and Kasper Lund about the state of Dart from the floor of Moscone Center. Dart is now running twice as fast as JavaScript on certain benchmarks. The language and the core libraries are stable, and Dart expects to reach 1.0 status in a few months.

Dart sessions at I/O

Google I/O 2013 featured three Dart talks (videos embedded below).

Web Languages and VMs: Fast Code is Always in Fashion

Lars Bak and Kasper Lund dove deep into the internals of V8 and the Dart VM, explaining why the new Dart VM is needed to take the web platform to the next level.




One popular part of their talk was a demo showing Dart's support for SIMD (single instruction, multiple data) processing. SIMD allows for a big performance boost. Without SIMD, their skeletal animation example supported only about 30 monsters (first image, below). With SIMD, that number increased to about 120 (second image).






Dart: HTML of the Future, Today!

Siggi Cherem and Emily Fortuna explained how Dart libraries have simplified the web building experience, and showed how cross-browser polyfills have made web components available for use today.



What's New in Dart: Your First-class Upgrade to Web Development

Justin Fagnani and Seth Ladd provided a whirlwind tour of the Dart platform and updated conference attendees on Dart developments since last I/O.




Dart code lab

The Dart code lab provided a hands-on experience to participants, who built a mobile-friendly web app using Dart and the Web UI framework.

Overflow crowd at the Dart code lab. The number of participants at the code lab increased by over 60% from I/O 2012
You can try the Dart codelab and build a modern app using the Web UI framework.

Dart booth at the Developer Sandbox

The Dart booth at I/O was a busy, bustling place. Conference attendees got to watch cool Dart demos, interact with Dart engineers, and pick up some nice Dart swag!

Shailen Tuli shows the results of benchmarking code in the Dart VM, dart2js, and hand-written JavaScript. The Dart VM won handily, with the JavaScript compiled by dart2js neck and neck with handwritten JavaScript.  


Adobe shows off the Toolkit for Dart

Adobe released the Toolkit for Dart for Adobe Flash Professional at I/O. The toolkit lets designers and animators create assets for HTML5 projects using Dart libraries and supports most of the core animation and illustration capabilities of Flash Professional.

Playing an HTML5 game built with Flash Pro, exported to Dart with the push of a button! 


Dart at the JetBrains booth

JetBrains featured their Dart plugin for the IntelliJ/WebStorm IDE.

An attendee gets a tour of the features available to Dart developers.


I/O news coverage about Dart

Stephen Shankland at CNET prominently covered the talk by Lars Bak and Kasper Lund on VM performance. Here's an excerpt:


John Pavley at the Huffington Post covered Dart in his round up of Google I/O news:

excerpt from huffpo article

To get an even better feel for Dart at Google I/O 2013, look for #io13 #dartlang on Google+

Monday, May 20, 2013

Notes from May 6th Dart Language Design Meeting

The incomporable Bob Nystrom fills us in on the language design discussions taking place amongst Dart engineers. Here are his notes from the May 6th language meeting:

API maturity annotations

Lars says Dan Grove wants a decision on annotations that denote maturity of source code. For most stuff, Lars thinks we should just annotate the whole library. The place where makes sense is dart:html. In that case, we can make an exception.

I asked if this is a language question, or just a question for people at the level of the language team.

Lars says Dan specifically said for the language.

Everyone agreed this is a good idea for the Dart system. [Gilad later clarified that they all also agree it is not a language issue.]

Lars says everything except dart:html we'll put in the libraries.dart config file. We can show that in the Editor.

[Dan later clarified was that his question was the meta-question to decide if this issue is a language issue or not.]

? operator

Gilad: Can we get rid of it?
Lars: Yes.
Gilad: OK, done.

map literals

Lars asks if everyone likes the new proposal [that Gilad sent to the language team]. Everyone does.

[This is now in the latest published spec. Basically, you can have non-string keys in map literals. Woo!]

exports

Lars says Florian has some issues about exports. Asked if Gilad is talking to him about it.

[This is the same issue about exports that came up on the mailing list recently.]

library names

Gilad says Kasper's proposal looks fine. Given other decisions we've made, it makes things more consistent.

Lars is reluctantly accepting it.

This means it will be a static warning to import multiple libraries with the same name. This is a breaking change so we should let people know it's coming.


As always, view the changelog for the full list of changes, and to get started with the Editor see our tutorial.

Wednesday, May 15, 2013

Adobe's Flash Pro CC Exports to Dart and HTML5


At Google I/O today, Adobe announced their new Toolkit for Dart, a plugin for Flash Professional CC that allows developers to export their animations and games to Dart code and HTML5.



"Adobe is delighted to announce the Toolkit for Dart, an extension that enables web designers and animators to publish their Flash content to Dart." said Tom Barclay, Sr. Product Manager at Adobe. With the Toolkit, developers, designers, and animators can create interactive, animated content inside of Flash Pro and publish to the Dart language and HTML5 APIs. Because Dart compiles to JavaScript, the content runs across modern desktop and mobile browsers without plugins.

Toolkit for Dart supports many of the core animation and drawing capabilities of Flash Pro, including bitmaps, shapes, movie clips, graphic symbols, classic tweens and motion guides, simple buttons, text fields, drop-shadow and glow filters, additive blend mode, single-shape masks, visible and cacheAsBitmap display options, and embedded audio. The Toolkit generates Dart code that represents items on the stage, symbols, images, and sounds in the library.

The Toolkit doesn't translate ActionScript to Dart. Instead, developers write Dart code for the interactive parts of the content. Dart is similar to ActionScript 3: it is a familiar, class-based, object-oriented language with rich core libraries, optional static types, and more.

The extension leverages the StageXL for Dart library to reproduce Flash runtime features. The StageXL library is a complete and robust Flash-like engine for Canvas that is built on top of the Dart programming language. StageXL provides an approachable Flash-like API to build games and other graphically rich content. It is intended for Flash/ActionScript developers who want to migrate their projects as well as their skills to HTML5. Bernhard Pichler, author of StageXL, asks you to "use your creativity to enrich the modern Web."

Adobe plans to contribute the Toolkit to the open source community. The Toolkit for Dart is expected to be available as a Github repo shortly after Flash Professional CC is released on June 17.

Monday, May 13, 2013

Try Dart In Your Browser

Try Dart without leaving your browser, thanks to the relaunch of try.dartlang.org. The team compiled dart2js (a Dart to JavaScript compiler) with dart2js to produce a web app that lets you write and test Dart code in your browser.

Try Dart is an easy way to experiment with Dart. The in-browser playground supports HTML, runs offline, and comes pre-loaded with a few examples.

Please enjoy, and let us know if you have any feedback.

New Targeted Mailing Lists for the Dart Project


tl;dr: We have some new discussion groups. Sign up for announce@dartlang.org.
For a quick summary, read the Guidelines section below.


---


Hello Dartisans!


As our community has grown, so has discussion around Dart, so we have created four new discussion groups, and updated a few others.


New Groups:


announce@dartlang.org : Dart Announcements
This group is for official announcement for the Dart project. This will be product releases, breaking changes, major events, press briefs, and other important messages for the entire Dart community. For now, the group will remain limited to a select group of individuals who manage specific parts of the Dart project.
I recommend signing up for this group today, as it is a low volume way to stay up to date with Dart on a day-to-day level.
---


Note: Replies to announcements in this group should go to dart-dev@dartlang.org to keep the announce list noise-free, but still provide a forum for discussion.

For the time being, posts to
announce@dartlang.org will be forwarded to misc@dartlang.org.
In a few weeks we will remove the forward to misc@dartlang.org to prevent unnecessary duplicate e-mails, so sign up now!



eng@dartlang.org : Dart Core Project and Libraries Development
This is the list to go to if you want to discuss the development of the Dart open source project. As the project continues to grow, it’s important to be able to stay connected with state of the core of Dart itself.


This is a good place to talk about core library APIs, discuss breaking changes, and interact with the Dart engineering team. If you’re thinking of contributing to the Dart project, let us know in this group!


This list will be more technical than some of the other lists, so keep that in mind when subscribing. You should subscribe to this list if you’re interested in keeping up with day to day Dart development and engineering.


---


Note: If your discussion is about a project you’ve created, broad feature requests such as other languages’ features you’d like to see in Dart, the state of the web/JavaScript/html5/etc., news, links, or events, then please post to misc@dartlang.org. See the guidelines below.



html-dev@dartlang.org : Dart DOM/HTML Libraries Development
If you want to keep up with the latest developments to the HTML/DOM libraries, here’s where to go! The libraries in question are: dart:html, dart:svg, dart:web_audio, dart:web_gl, dart:indexed_db, dart:web_sql, and dart:chrome, but it’s possible there will be more. This is the group to follow to hear about changes to DOM bindings.
I recommend signing up for this group, as it is a medium volume way to stay up to date with anything changing in the main DOM libraries. If you build client applications, or just care about the modern web, stay tuned!


editor@dartlang.org : Dart Editor and Plugin Development and Discussion
If you use the Dart Editor to write Dart code, or debug Dart applications, or for any reason at all, this is the group for you. The Editor team loves, probably more than any other team, receiving feedback. This list is a great place to talk about what you want to see in the Editor, and discuss the state of the Dart IDE.

---


Other groups:


Just a reminder about the other groups we have:


misc@dartlang.org : Miscellaneous Discussion
vm-dev@dartlang.org : Dart VM Development
compiler-dev@dartlang.org : dart2js Development
web-ui@dartlang.org : Dart Web UI Package Discussion


The following groups are read-only, as their posts are auto-generated:


commits@dartlang.org : Commits to the Dart Repository
bugs@dartlang.org : Dart Issue Tracker Updates
reviews@dartlang.org : Dart Code Review Updates

---


And just to be clear, here are guidelines for posting to any of the groups:


Guidelines

Wednesday, May 8, 2013

New Quick Assist Items in Latest Dart Editor Build

A new Dart Editor build is available at www.dartlang.org/editor

This build introduces a couple of quick assist items.

The first assist item lets you combine an 'if' statement with an inner 'if' statement. Place the cursor over the starting if, press cmd-1, and hit return. That converts the following code:

  if (!(object is Person)) {
    if (object.name.beginsWith('R')) {
      nextItem = object.name;
    }
  }

to this:

if (!(object is Person) && object.name.beginsWith('R')) {
  nextItem = object.name;
}

The other quick action converts (!(item is A)) to (item is! A) format:

Place cursor over is, press cmd-1, and hit Return to convert to to is! format


Eric Clayberg fills us in on the changes introduced in this build:
  • Opening type from omni box opens corresponding file.
  • F3 works for URL in import/export directives.
  • Search View: Show next/previous search result actions.
  • Search View: Show type references as part of the first field in declaration.
  • DND in Files view restored, will update URLs in/to moved unit.
  • New Quick Assist to Join 'if' statement with inner 'if' statement
  • New Quick Assist to convert '!(x is A)' into 'x is! A'.
  • New Quick Fix to add 'package:' import.
  • Fix for ‘library’ directive highlighting when there is leading Dartdoc.
  • Fewer false positives in new analysis engine.
  • Additional warnings and errors enabled in new analysis engine.
  • Many general improvements and fixes to new analysis engine.
      Breaking Change List:
  • Directory.current is now a getter

As always, view the changelog for the full list of changes, and to get started with the Editor see our tutorial.

Thursday, May 2, 2013

Dart Sessions at Google I/O 2013

Join us at Google I/O 2013 in San Francisco's Moscone Center from May 15 through 17.



This year's conference features numerous events of interest to the Dart community. You can see three Dart presentations, and take part in a Dart code lab. One of the talks, by Dart creators Lars Bak and Kasper Lund, will be streamed live. And all of the talks will be available on video.

If you are at I/O, be sure to stop by at the Dart booth in the Developer Sandbox on the 3rd floor of Moscone Center. You can ask questions of Dart team members who will be available on all three days at the booth, and also at the office hours area nearby.

Here are some details about the talks and the code lab:

Web Languages and VMs: Fast Code is Always in Fashion

Lars Bak, Kasper Lund

A fundamental necessity for innovation within web apps is fast execution speed. This talk will take a deep dive into the machine rooms of both V8 and the Dart VM and explain some of the reasons why a new execution engine is needed for taking the web platform to the next level. Please join us to hear about how programming languages impact the underlying virtual machines, complexity, on-the-fly code generation, and predictable performance.

When: May 16, 10:00AM - 11:00AM PDT Level: Intermediate Track: Chrome & Apps


Come see what's new in Dart with its comprehensive, open-source ecosystem for the modern web developer. Learn how to be more productive with a new language: future-based DOM, package manager, JS-interop, a tree-shaking compiler to JavaScript, SIMD, Web Components, a rich editor, and much more. You'll leave this talk all caught up with Dart and ready to make the web awesome

When: May 16, 12:45PM - 1:25PM PDT Level: Intermediate Track: Chrome & Apps

Dart: HTML of the Future, Today!

Sigmund Cherem, Emily Fortuna

Develop large apps in a structured language and still experience fast Edit/Reload development cycles? Indeed, the prophecy has come true. Get crazy productive with Dart's tools, smooth HTML libraries, cross-browser polyfills, and web components based framework. Come learn how you can easily and quickly develop web apps that work cross-browser on both desktop and mobile platforms. We'll show you how to build modern web apps with Web Components and dynamic data-driven views without having to wait for cumbersome compile cycles. Make a change, hit reload, and boom, it's ready for all modern browsers.

When: May 16, 3:30PM - 4:10PM PDT Level: Intermediate Track: Chrome & Apps


You paid for the whole seat but you'll only need the edge! Get hands-on experience and build declarative, modern mobile web apps with Dart and Web Components. Go from zero to magnificent using Dart's structured language, comprehensive libraries, and lightning-fast dev cycle. Learn how to use the Dart toolchain to deploy and test web apps for tablet, phone, and desktop. Yes, you can!

When: May 17, 9:00AM - 11:00AM PDT Level: Intermediate Track: Chrome & Apps