Skip to main content

Posts

Showing posts from 2013

Ecma forms TC52 for Dart Standardization

This week Ecma created a new technical committee named TC52 to publish a standard specification of the Dart language. We’re excited about this milestone in the evolution of Dart and the web.

Dart is ready for standardization. As of last month’s 1.0 SDK release, Dart is now officially stable and mature enough for production use. We’ll be collaborating with the broader web community via TC52 to responsibly evolve the language going forward.

The new standardization process is an important step towards a future where Dart runs natively in web browsers. Dart apps can be fast when compiled to JavaScript, but an embedded Dart VM enables even better performance.

We're thrilled to have a dedicated technical committee working on Dart. We also feel confident that Ecma—the home of standards such as JavaScript, Eiffel, and C#—is the right place to help guide the evolution of the Dart language. If you’d like to get involved, please join the committee.

How dart2js generates efficient JavaScript code

Learn how dart2js generates efficient JavaScript code with the video and slides from "Dart for the Modern Web Developer" talk from Chrome Dev Summit. This presentation, from Dart engineers Kasper Lund and Seth Ladd, takes a look into dart2js, a Dart to JavaScript compiler, and showed how it generates efficient JavaScript code.



Performance charts show dart2js generates JavaScript code that is sometimes faster than hand-written JavaScript code. The compiler is able to analyze the entire Dart program for both local and global optimizations. The presentation shows some of the techniques, with plenty of code examples.

Check out all the great content from Chrome Dev Summit, including content on mobile web development, performance, DevTools, and more. Enjoy!

Dart used to build new development editor for Chrome Apps

The Spark project is a new development environment built with Dart and Polymer for the Chrome Apps platform. Spark is an open-source project hosted on Github.


François Beaufort reports that the project contains GUI widgets powered by Polymer, the new library for modern web apps build on Web Components.
Spark's primary focus is building web apps written in Dart and Chrome App based applications. It is an early example of how to combine Dart, Polymer, Dart-JavaScript interop, and Chrome Apps to build a modern app using web technologies.

Dart 1.0: A stable SDK for structured web apps

Today we’re releasing the Dart SDK 1.0, a cross-browser, open source toolkit for structured web applications. In the two years since we first announced Dart, we’ve been working closely with early adopters to mature the project and grow the community. This release marks Dart's transition to a production-ready option for web developers.

The Dart SDK 1.0 includes everything you need to write structured web applications: a simple yet powerful programming language, robust tools, and comprehensive core libraries. Together, these pieces can help make your development workflow simpler, faster, and more scalable as your projects grow from a few scripts to full-fledged web applications.

On the tools side, the SDK includes Dart Editor, a lightweight but powerful Dart development environment. We wanted to give developers the tools to manage a growing code base, so we added code completion, refactoring, jump to definition, a debugger, hints and warnings, and lots more. Dart also offers an…

Dart at Devoxx 2013

Devoxx 2013 is here, and Dart has a strong showing on Thursday, November 14th.

Keynote with Lars Bak
At 9:40am, Dart co-founder Lars Bak delivers the morning keynote titled "Shaping the Future of Web Development".


Q&A with the Dart Team
At 1:10pm, representatives from the Dart team will take your questions in a "ask us anything" format. Bonus: we'll be playing buzzword bingo.


Building a mobile, multi-player HTML5 game with Dart
At 2:00pm, Seth Ladd presents a case study on his team's recent project to build a multi-player, multi-device, mobile-friendly, HTML5 game with Dart.


Happy hour with Dart and Angular
At 6:00pm, meet the Dart and Angular teams for a happy hour. We'll have food and drinks, and plenty of opportunity to chat with the engineers behind the projects. Visit the Google booth, or find a Dart or Angular engineer, to get a wristband (free while supplies last). Hope to see you there!

Stop by and say Hi!
If you're at Devoxx, please sto…

Angular Announces AngularDart

Today the Angular team announced the beta release of the AngularDart framework, their port of Angular to Dart.

AngularDart is heavily inspired by AngularJS and is supercharged for Dart. Core Angular features such as directives, data binding, and dependency injection, are all there, and they've taken advantage of Dart's features like metadata, types, and classes to feel natural for Dart developers. AngularDart is also the first version of Angular to be built on emerging web standards like Shadow DOM.

To ensure that AngularDart would be usable out of the box, they partnered with another team inside Google to build a real application. This team, code named Green Tea, was tasked with creating the sales force automation application for Google's sales teams. The Green Tea team reported great success in shipping their first version with AngularDart, built from scratch and delivered in under six months.

The Angular team is committed to maintaining AngularDart and pushing forward …

Faster dart2js and new HTML editor in latest Dart SDK release

With today's milestone release, Dart is faster and more productive. Performance from generated JavaScript code is up, Dartium added a REPL, and Dart Editor has better HTML/CSS editing and a new pub package browser.

dart2js generates faster JavaScript from Dart

Thanks to a new type inference engine in the dart2js translator, some benchmark scores went up >100% since the previous milestone release. See dartlang.org/performance for the latest performance numbers.




New HTML/CSS editors in Dart Editor

Dart Editor has new HTML and CSS editors that improve the web app authoring experience. If you edit HTML or CSS, you will now find:
improved semantic highlighting of HTML and CSS elements code completion / content assist quick fixes / assists code folding and enhanced navigation hover info and hints delimiter highlighting / bracket matching 


Dart Editor now helps you find the right package for your app. Right-click on the packages folder in the Files view, select “Find packages to inc…

Google's German Election Map Powered by Dart

The Google Politics & Elections team launched a German federal elections results map powered by Dart, a new web programming language.

Jason Brooks, a Google engineer that helped build the app, shares his experience using Dart: "We wanted to build a platform that would enable us to iterate quickly; to be flexible enough to allow us to experiment, while being robust enough to ensure the correctness of politically sensitive information. Dart has made it easy to build out a very capable platform. We are really excited about what we'll be able to do next."

The application uses Google Maps to display results by district. Dart is used for the UI, and to draw the district boundaries.



The Politics & Elections team wants "tools to help provide information about the federal election, but also offer a way to connect and engage with district-level candidates." It's great to see Dart being used to help the electoral process.

Read more about the announcement from …

10 Upcoming Dart Talks From Around the Globe

The fall conference season is starting, with Dart sessions in JavaScript, Java, and software conferences around the world.

Some upcoming presentations:

Blend, Oct 1-2, France
Speaker: Sébastien Deleuze
http://www.blendconference.com/schedule/le-langage-dart-le-futur-des-langages-de-programmation/

Softshake, Oct 24-25, Switzerland
Speaker: Sébastien Deleuze
http://soft-shake.ch/2013/program/sessions/13_web_dev/2013/10/24/7-Dart_one_language_to_rule_them_all.html

GDG Seattle Devfest, Sept 27, Seattle, WA, USA
Speaker: Emily Fortuna
http://www.meetup.com/seattle-gdg/events/125948972/

JavaZone, Sept 11-12, Norway
Speaker: Seth Ladd
http://jz13.java.no/

dotJS, Dec 2, Paris, France
Speaker: Lars Bak
http://www.dotjs.eu/

JAZOON, Oct 22, Zurich
Speaker: Paul Brauner
http://jazoonvote.appspot.com/#/submissions/124

JAX, Oct 29, London
Speaker: Chris Buckett
http://jaxlondon.com/sessions/bringing-your-app-web-dart

Devoxx, Nov 11-15, Belgium Keynote: Lars Bak Speaker: Seth Ladd
http://www.devoxx.be/#/

Strangeloop…

Increased Stability in new Dart SDK release

With the new milestone release today, Dart has become more stable: we have fixed over 650 bugs since our last milestone release in June. Moreover, a reduced API churn in the core libraries and continuous improvement of the developer experience (e.g. in debugging) has improved the overall stability of the platform substantially.

Reflection has been improved in the Dart VM. For example, reflectively performing a new invocation on an object is now 20 times faster. The VM, in addition to ia32 and x64, has also been ported to ARM and MIPS.

Debugging performance was improved for stepping in both Dartium and standalone Dart VM. In particular, we have addressed debugger usability issues, such as:
Stepping into closures, callbacks and emulated functions.Stepping across asynchronous invocations.Support for top level exception handling. In the Editor, the new analysis engine is now fully spec compliant. The Editor also provides hints on unused library imports and dead code, helping developers keep …

Ecma to hold workshop on the Dart programming language

Ecma will hold a workshop on Dart on September 20, 2013 in Boston, Massachusetts, US. We encourage both members and nonmembers to let us know they are interested in attending.

In April 2013, Dart was proposed for standardization by Ecma International. In June 2013 at the Ecma General Assembly a successful presentation on Dart was held, a draft scope of work was proposed, and the topic of standardization was discussed.

The Ecma GA has decided to progress with the project, and will hold the workshop on Dart before the October Ecma CC meeting. In the workshop we'll give a short introduction to Dart, set the direction for the possible future Dart work in Ecma, and discuss potential new features in Dart.

Members of the Dart project, including Dart's "Chief Specification Officer" Gilad Bracha, will be in attendance.

The workshop is a good opportunity to help drive the evolution of the Dart language. Please register your interest before September 6.

Dart App Wins Google Glass Hackathon

High-fives to team GlassFrogger, who used Dart and HTML5 to win the Breaking Glass hackathon on August 18th, 2013. They ported the classic arcade game Frogger to Google Glass and its embedded web browser.


"A lot of this was discovery...we wanted to see what we could exploit without having to write a native app. How can we reuse our code? We can write this once and deploy it anywhere [with Dart and HTML5].", said Adam Singer, developer on GlassFrogger.

Hop on over to the video of the demo pitch and a bit of game play. Engadget and Robert Scoble covered the winners, and were impressed by the effort.

The game, while not complete, was built entirely during the 48-hour hackathon. Luckily, the Dart code is open source and you can try it with or without glass (try spacebar to move forward, not sure there's a move backward yet. Did we mention it's open source?) The Dart app is compiled to JavaScript, so that it can run across Glass and modern web browsers.

The Dart code uses the…

Dart Libraries for Google APIs and Protobufs Available

Dart libraries for both Google APIs and Protobufs are available for download. You can use Dart to access APIs from services such as Google+, YouTube, Drive, and more. You can also use Dart to interact with Protocol Buffers, Google's structured data encoding format. The libraries are open source and available today.

The Dart client libraries for Google APIs cover a wide range of Google APIs. Each client library is bundled as a pub package and uploaded to pub.dartlang.org, Dart's package hosting service. For example, check out the Dart library for the YouTube API on pub. These libraries are maintained by a dedicated group of Dart community developers.

Bonus: learn how to generate Dart client libraries for your own Cloud Endpoint service in this post from the Dartwatch blog.

Protocol Buffers, or protobufs, are a way to encode and decode structured data for interop between various systems. Both the protobuf runtime and code generator are available for Dart, and are open source.

Notes from the July 8 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 July 8th language meeting:
Here's my notes!
JS interop and proxies
Lars tried to make a little app using JS interop. He gets warnings from dart2js because JS interop returns a proxy. The only way to get rid of the warnings is to edit the interop package itself to make it return the dynamic type.
Gilad says we don't currently have a solution for general purpose proxies, though we've discussed a couple.
The biggest problem is checked mode. If it was just static warnings, we could do an annotation or something to turn off the warning. For general purpose proxies, "implements dynamic" may be the best thing: it is a black hole that implements anything.
We will have to educate people: most of the time you want to implement some specific type and not turn them all off like this.
One thing Lars noticed when playing with JS interop: u…

Introducing polymer.dart

Dart engineer John Messerly announces the launch of polymer.dart, a port of the Polymer stack. The Web UI package will be maintained for some time, but will eventually be replaced by polymer.dart.

Here is John's original post introducing polymer.dart:

Hello Dartisans,

Since we started Web UI, we've had a goal to bring the latest web standards like Web Components and Model-Driven Views to Dart developers. There have been some great developments since we started:
Web Components has progressed into a set of detailed specs (Custom Elements, Shadow DOM, HTML Templates, HTML Imports) with interest and implementation by multiple browser vendors. Model-Driven Views has new APIs (Node.bind, TemplateElement.model) that allow custom elements to participate in the binding system, as well as the ability to plug in custom syntax, such as the fancy_syntax package. dart:mirrors is now implemented in dart2js! Last but not least: the development of the Polymer project. Polymer is a new type of JavaSc…

Release Notes for Dart's Beta Release

Today's release of the Dart SDK and Editor is the first beta release, and contains performance and productivity improvements across the platform. This latest release helps Dart developers automate code evolution, produce smaller JavaScript code and deploy Dart web apps.

The major additions and changes to the platform include:


dart2js Added support for dart:typed_data Improved type inferrer by using union types and keeping track of side effects Implemented sharing of code mixed into multiple classes More coverage for handling of generic type Performance improvements 20% faster on Richards, 10% faster on DeltaBlue, 8% faster on Tracer Significant progress on mirrors support (work in progress) Dart VM DeltaBlue: 40% faster than M4 Tracer: 33% faster than M4 Full SIMD acceleration Reduced initial snapshot size improves startup time for new isolates Improved stability of debugging experience Editor A new 20% faster Analyzer in Editor and SDK.

Notes from the June 10 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 June 10th language meeting:
Here's my notes from this week's (short) meeting:

Name collisions with dart: imports
[A customer recently ran into an issue where a new type appeared in dart:html whose name collided with a name they were importing from elsewhere. This broke their app.]
Gilad brought up this issue. Pete's suggestion is if there's a collision between a "dart:" import and another library, the other library wins. That way, we can add stuff to "dart:" libraries without breaking people. I explained some more details here.
Lars asked if there are any negative consequences from that suggestion and when it needs to be fixed. Kasper suggested we start making it a warning [instead of an error?] now.
Ivan asked how JS handles this. Kasper said DOM names are usually higher up on the prototype chain so you get simil…

Angular.js announces port for Dart

The Angular team recently announced a Dart port of the popular Angular.js framework.
Large parts of Angular functionality—components like $compiler and $scope, basic directives like ngBind and ngRepeat—have already been ported over to Dart and can be used today.  Other critical Angular parts like Dependency Injection and Routes are being ported now. Karma, the Angular test runner, already works with Dart.
Angular team members Brad Green and Igor Minar provide details in the video from the AngularJS meetup this week. The Dart-specific discussion begins at the 40 minute mark.





Notes From the June 4 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 June 4th language meeting:
Here's my notes. As usual all mistakes are my own:
are boxed doubles identical?
There is a bug where doubles with the same value may return false for identical() because they have been boxed to different objects.
Lars said it's been discussed. For doubles, identical() should return true based on value. We don't want the language spec to have to mention boxing so that the VM is free to optimize how it wants.
Gilad asked if NaN is identical to NaN?
Lars says yes. It's identical but not equal. Gilad will fix the spec.
change uninitialized field error to warning?
Uninitialized final fields are currently an error in the language. Kasper suggests making it a warning. It seems in line with other stuff in language. It's easy to associate some value with an uninitialized final.
Gilad says we can do this and asked…