## DevInSampa 2012 # building dynjs # the saga ### [@qmx](http://twitter.com/qmx) - [blog.qmx.me](http://blog.qmx.me)
# whoami

(we're hiring)

dynjs
# disclaimer

building dynjs

the saga

Nov 2010

the invitation

halp?

the idea

let's start the research

Rhino

eyes bleeding

halp x4

what now?

jruby + invokedynamic

<3

# why not?

js + invokedynamic

6 months

compiler?

doable?

no effin' way

explaining why?

close enough

dynjs

3 main

objectives

\o/

learn

new stuff

have

beautiful

code

scary

the team

me!

(duh)

@abstractj

@porcelli

@p_balduino

survived

BrazilJS 2011

the last BrazilJS

slide

dynjs, 100% invokedynamic js impl - coming soon

the work continued

July 2011

ZOMG

a deadline

took some

shortcuts

ready for a

demo

on stage

good ol'

Hello World

opensourced

on stage, after the talk

thought on 0.1 in

one month

epic #fail

MOAR work

OSS Rocks!

the team grows

@lanceball

@bobmcwhirter

JBoss Polyglots

of TorqueBox fame

step 1

killing shortcuts

goodbye

invokedynamic

WTF?

a timely

accident

:)

a little

background

want to

learn MORE

about something?

start

doing

it

JVM's

invokedynamic

is no different

JVM's JIT

has two parts

C1

inlining & stuff

C2

(zomg, x86 ASM)

invokedynamic used

a lot of

C2

heisenbugs

a rewrite

began

targeting JDK8

2013!

#fail

and #win

the rewrite might be

backported

to JDK7

no

guarantees

invokedynamic

will return

SOON

next?

we focused on

improving spec coverage

ECMA's test262 project

is

awesome!

ECMA suite

						if(Date.prototype.hasOwnProperty("getMinutes") !== true){
  $ERROR('#1: The Date.prototype has the property "getMinutes"');
}
					

the

bob-lance

effect

from

10k

tests failing

to

3k

tests failing

it's over 60%

getting closer to

1.0

TL;DR

do stuff for

\o/

estimating effort

sucks

underpromise

overdeliver

having a

good spec

is vital

language

lawyering

correctness

f1rst

performance

second

build

anticipation

and

FFS

SHIP IT

thanks!