Profile

Cover photo
Gilad Bracha
Works at Google
319,377 views
AboutPostsYouTubeReviews

Stream

Gilad Bracha

Shared publicly  - 
 
 
Calling all Dartisans - Propose your session or case study for the Dart Developer Summit.

The Dart Developer Summit is your forum for meeting the Dart engineering team, Googlers using Dart, and your fellow Dartisans.  Our community has told us they want to hear how you are using Dart. What is your cool new pub package? How did you use Dart on the client or server? What are you tips and tricks?

Our sessions are live streamed and recorded to help you get the word out. The summit is April 28th-29th in San Francisco, California. Call for Proposals closes on Jan 30th!

See you there!

https://docs.google.com/a/google.com/forms/d/1pEL1f_b7eE3ZWKqbGlSbxH8H9wL05qTY2sZZSGlIlTc/viewform
Drive
Dart Summit - Call for ProposalsPlease submit your Call for Proposal before Jan 30th 2015. We will review all sessions in February and send confirmation emails beginning/mid March 2015. If you have any questions, email dart-summit-questions@googlegroups.com. Keep yourself updated on the Dart Summit at https://www.dartlang.org/events/2015/summit/
3 comments on original post
1
Gilad Bracha's profile photoSean McDirmid's profile photo
3 comments
 
Cool, I just saw the dates were close (I treat G+ too much like Facebook).
Add a comment...

Gilad Bracha

Shared publicly  - 
 
A DSL with a View
In a previous post, I promised to explain how one might define UIs using an internal DSL. Using an internal DSL would allow us to capitalize on the full power of a general purpose programming language and avoid having to reinvent everything from if-statemen...
13
3
Dzenan Ridjanovic's profile photoVadim Nasardinov's profile photo
Add a comment...

Gilad Bracha

Shared publicly  - 
 
 
Woo! Implemented access control in Newspeak-to-Javascript.
5 comments on original post
5
Add a comment...

Gilad Bracha

Shared publicly  - 
 
A short article about await-async in Dart, focused on the first features that are becoming available at the bleeding edge.

https://www.dartlang.org/articles/await-async/
Async and await, two language features that support asynchronous programming, are now available in Dart.
26
6
Heikki Lappalainen's profile photogeorge oloo's profile photoPatrice Chalin's profile photoCharles Torre's profile photo
3 comments
 
what version of dart is this feature targeted for?
Add a comment...

Gilad Bracha

Shared publicly  - 
 
New blog post.
10
1
Dennis Biringer's profile photo
Add a comment...

Gilad Bracha

Shared publicly  - 
 
 
Incremental Compiler Update

#dartlang

As you probably know, I'm working on incrementally compiling Dart to JavaScript. This is based on dart2js.

By incremental compilation, I mean that after an initial full compile (which is slow), the compiler will continue running and quickly compile patches to the result of the full compilation. The time it takes to perform a full compilation scales in the size of the entire program (including all imported libraries, including the SDK). The time it takes to incrementally compile should be proportional to the size of the change (and how much code is affected by that change).

For example, if it takes 30 seconds to compile a program with 10000 methods, it should take 0.003 seconds to incrementally compile a change to a single method body.

There some additional effects that can impact compile times, for example, if you change a large file, the time it takes to compute a difference may become significant (in extreme cases, I've seen 0.3 seconds used on analyzing a 2.5MB source file). Likewise, if you add a method to a class C, the compiler may have to examine all methods in subclasses of C. For example, as a thought example, let's consider what could happen if you could add a method to Object (in practice, you can't). But for the sake of an example, if a method was added to Object, the incremental compiler might decide to compile all methods in all classes.

But in practice, these caveats shouldn't matter. Most of the time, the compiler should be faster than you can notice, and rarely feel sluggish.

And now to the update. I'm currently working towards turning this into a product you can use in your daily development. This is the list of things that needs to be implemented before I feel it is ready for users:

* Better error recovery. Sometimes, dart2js will give up and abort compilation by throwing an exception if it detects a compile-time error. In this case, the compiler is left in an inconsistent state and we have to restart the process by performing a full compilation. That's really bad as the compiler is supposed to help the developer detect errors, not punishing them for making mistakes.

* Native classes.

* File watching compiler server.

I'm currently focusing on error recovery.
9 comments on original post
3
Sean McDirmid's profile photo
 
I did the exact same thing to scalac 7 years ago; going through all the steps (better error recovery, rollback and repair of trees at some granular < a file unit). This is a dark art that everyone refuses to talk about (or at least document in a paper :) ). 
Add a comment...

Gilad Bracha

Shared publicly  - 
 
 
Yet another update on incremental compilation

On Monday, I shared some information about incremental compilation (https://plus.google.com/u/0/+PetervonderAh%C3%A9/posts/XSn1FQkUMnt).

Since then, the following was implemented:

* Changing supertypes of a class.

* Adding or removing a class.

* Adding instance fields.

I'm currently focusing on:

* Changing and removing instance fields.

The following is still missing:

* Changing, adding, and removing static and top-level fields.

* Libraries with more than one part.

* Runtime type support (how “is” and “as” tests are implemented).

* Mirror support.

* Native classes support (how dart:html is implemented).

The last two items are still unknowns, but we think we know how to do runtime type support.

#dartlang
4 comments on original post
4
Add a comment...

Gilad Bracha

Shared publicly  - 
 
Live update of methods and more in Dart. Hopefully we'll eventually see this in the product.
 
Update on incremental compilation

I figured it’s about time that I share another update on incremental compilation as it’s been over a month since my last update (https://plus.google.com/u/0/+PetervonderAh%C3%A9/posts/VV2AWu7kste and https://plus.google.com/u/0/+PetervonderAh%C3%A9/posts/JUVXaHtpbgL).

Last time I reported numbers about timing, and they still hold. Since then, I’ve been focusing on making incremental compilation feature complete.

This is what the incremental compiler can today:

* Read your program and compare it to an older version to compute a diff.

* Compute a JavaScript patch to change methods, remove methods, and add methods (top-level functions, static methods, and instance methods all supported).

* Identify and recompile methods affected by scope changes .
Handle that previously uninstantiated classes are instantiated.

What is missing:

* Changing, adding, and removing fields.

* Changing supertypes of a class.

* Adding or removing a class.

* Libraries with more than one part.

* Mirror support.

* Native classes support (how dart:html is implemented).

* Runtime type support (how “is” and “as” tests are implemented).

Of those items, I’m mostly concerned about the latter three. Those are the ones I expect will be hardest to test, and thus cause the most problems for early users of incremental compilation.

#dartlang  
9 comments on original post
6
2
Gilad Bracha's profile photoSean McDirmid's profile photoThomas Schranz's profile photogeorge oloo's profile photo
8 comments
 
That makes sense, thanks. There are issues with consistency anyways that make restarts necessary. 

Anyways, I'm going to dive into the Javascript world anytime soon...the lack of multi-threading makes it a poor fit for Glitch. 
Add a comment...

Gilad Bracha

Shared publicly  - 
 
 
REPLs are not live programming environments; they lack the ability to abstract over a program's execution and instead just allow you to add new code into it on the fly (extend its execution vs. change its existing execution). 
View original post
4
Christian Plesner Hansen's profile photoGilad Bracha's profile photoSean McDirmid's profile photo
22 comments
 
Yep.
Add a comment...

Gilad Bracha

Shared publicly  - 
 
A DOMain of Shadows
One of the advantages of an internal DSL  over an external one is that you can leverage the full power of a general purpose programming language. If you create an external DSL, you may need to reinvent a slew of mechanisms that a good general purpose langua...
20
8
Borislav Iordanov's profile photoCiprian Ceteras (Cipix)'s profile photoClaudio Omar Biale's profile photoPatrice Chalin's profile photo
5 comments
 
Hi Lex.I had not seen that paper, but it is delightful, thanks.
Add a comment...

Gilad Bracha

Shared publicly  - 
 
Taking it to Th’emacs
Emacs is my preferred text editor. I don’t use old-fashioned text editors as much as I used to, because I often need more specialized tools.  I use IDEs for various programming languages and other things when producing high quality documents. And yet, I oft...
17
4
Peter von der Ahé's profile photoYardena Meymann's profile photoFelix Geller's profile photoVadim Nasardinov's profile photo
6 comments
 
That too. And the there is the UI: The horrible collage of panes that
cannot speak their name, with the awful undecipherable icons. After that
there is the bloat and slow startup. It is simply the culmination of the
stilted, static mindset attempting to foresee and control everything. An
AbstractIDEBuilderFactoryPatternServiceManagerController
Add a comment...
Story
Introduction
Basic Information
Gender
Male
Relationship
Married
Work
Employment
  • Google
    software engineer, 2011 - present
It's been almost 30 years since I did my undergraduate studies in computer science at BGU, but I had a great time and got an education that has served me well. BGU was small enough to be pleasant and intimate - probably still is, if a little less so. It's great to see it on street view. I always loved the unusual architecture.
Public - 2 years ago
reviewed 2 years ago
1 review
Map
Map
Map