SlideShare a Scribd company logo
Clojurescript slides
Clojure ...
Clojure ...
          rocks
Clojure ...
          rocks
JavaScript ...
Clojure ...
          rocks
JavaScript ...
          reaches
ClojureScript
Why ClojureScript?
• JavaScript is the only programming
  technology in key environments
 • e.g. the browser
 • has the greatest reach in mobile
 • but is not very robust
• While demand for sophisticated
  applications increases
Rationale

• Clojure is arguably simpler, more powerful
  and more robust than JS
• JS VMs getting faster
• Clojure on JS empowers developers
Strategy

• Compile (a substantial subset of) Clojure to
  JS source
• Leverage best-of-breed JS approaches
• Look beyond the browser
Non-Objectives

• Complete Clojure
• Portable large applications
• Browser REPL demos etc

• The target is production applications
Tactics

• ClojureScript in Clojure(Script)
• ClojureScript on (Google) Closure
ClojureScript in
      Clojure(Script)
• Compiler written in Clojure
• Macros written in Clojure
• Library written in ClojureScript
 • No JavaScript source files
CinC

• Core abstractions are protocols
• Data structures are deftypes
• Excellent mapping to JS under the hood
REPL

• Written in Clojure
• Hosts embedded Rhino
• Compiles to JS on the fly
 • Rhino evals
Google Closure
• Production Code
• Closure Compiler
 • virtually all of Google’s JS goes through this
• Closure Library
 • Used by Google Gmail, Maps, Docs, Sites,
    Books, Reader, Calendar, Photos, Google+
Why Give Google
     Closure Away?
• Be cool
• Make friends
• See if it sticks
• Not using it anymore
• Sucker community into maintaining
• They want the web to win as an application
  platform
Closure Compiler
• Optimizing Compiler
 • Whitespace only
 • Within-function
 • Whole program (advanced mode)
• Try it:
 • http://closure-compiler.appspot.com/home
Another Minifier, yawn
• No!
• Closure compiler does symbol replacement
 • but also expression rewriting,
    transformation
• Dead code elimination
 • read as: uncalled code elimination
Why Whole Program
Optimization Matters
• Libraries
 • Large libraries
 • Many libraries
• Sum of many minified libs is large again
• What % of each lib do you use in one app?
 • Diminishing returns from delayed loading
    and modularity efforts
Making it work
• Convention, and lots of it
 • Welcome to Javascript!
 • Trickiness abounds - string access to
    properties, exporting, side-effects
• Google’s conventions not widely followed
• What if we had a Javascript-emitting
  language that always emitted advanced-
  mode compatible code?
Closure Library
• Huge!
 • UI, events, DOM, communications, testing,
    algorithms and data structures...
  • Packaging and dependency resolution
• Yet, not
 • Symbiotic with Closure compiler
 • Your app will include only the code it uses
   • require lib != use all of it
Whole-program
Optimization for the Win
 • Google has decided this is the key to
   delivering
   • rich applications
   • over thin wires
   • to memory constrained devices
 • Given away sophisticated tools for making
   that work
ClojureScript on
    (Google) Closure
• Emits advanced-mode compatible code
 • encapsulates conventions
• Participates in dependency system
 • maps Clojure namespaces to Google’s
    optimizable format
• Profit! - whole-program optimization and
  large library support
Find Out More




“The O’Reilly [kloh-zher] book -
 you know, with the bird on the
             front”
What’s There

• Compiler
• REPL
• Primitives
• Arity overloading
• Macros
What’s There

• Seqs, maps, vectors, sets
 • and much of supporting library
• Symbols, keywords
• Destructuring
• Regex
What’s There
• deftypes
 • core datatypes
• protocols
 • all abstractions
 • extend-type, extend-protocol
 • can extend primitives e.g. string, nil, default
• Both defined in terms of primitives
What’s There

• 2500+ lines of core lib
• clojure.string
• clojure.set
• clojure.walk
• clojure.zip
What’s There

• Reader
 • Why, given JSON?
   • Sets, keywords, symbols
   • Metadata
 • Great fit when Clojure on the server
What’s There
• Namespaces
 • integrated with Google Closure provide/
    require
• compile-file, build project, including
 • deps calculation
 • invocation of Google Closure compiler
What’s Not (yet)
• Full collection persistence
• defrecord
• multimethods/hierarchy
• Full numerics
• Testing
• Misc core library
What Won’t Be

• Thread-related things
• eval and runtime compilation
• structs, proxy, Java type-stuff
• Runtime reification of
 • Vars, namespaces, protocols etc
It’s Alpha!

• Bugs
• Missing bits
• Rough edges
• Work to do
Who Did This?
• Clojure/core and friends:
  Aaron Bedra, Alan Dipert, Alex Redington
  Bobby Calderwood, Brenton Ashworth
  Chris Houser, Devin Walters, Eric Thorsen
  Frank Failla, Michael Fogus, Jess Martin
  Luke VanderHart, Chris Redinger, Jonathan Claggett
  Stuart Halloway, Stuart Sierra, Tom Hickey
Participating
• This is a Clojure/dev project
 • all with Clojure CAs welcome to participate
• Plenty to do
 • Libraries
 • Environment
 • Tooling
Face Time
• The Conj!
 • Nov. 10-12 Raleigh, NC
 • With training: Nov. 7 -12
 • http://clojure-conj.org/
 • Early registration ends soon
• Core Fridays
Demo

• REPL
• Compilation
• Web app
• CLI app
Summary
• ClojureScript is
 • Clojure's client story
 • Clojure's mobile story
 • Clojure's CLI scripting story
• The power of Clojure
 • The reach of JavaScript

More Related Content

PDF
Javascript Libraries
elliando dias
 
PDF
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
PDF
Functional Programming with Immutable Data Structures
elliando dias
 
PDF
Why you should be excited about ClojureScript
elliando dias
 
PPTX
Scalable Open Source
Michael Klishin
 
PDF
Web Development using Ruby on Rails
Avi Kedar
 
PPTX
My first powershell script
David Cobb
 
KEY
Why ruby and rails
Reuven Lerner
 
Javascript Libraries
elliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
Functional Programming with Immutable Data Structures
elliando dias
 
Why you should be excited about ClojureScript
elliando dias
 
Scalable Open Source
Michael Klishin
 
Web Development using Ruby on Rails
Avi Kedar
 
My first powershell script
David Cobb
 
Why ruby and rails
Reuven Lerner
 

What's hot (20)

KEY
A web app in pure Clojure
Dane Schneider
 
PPTX
Put Your Thinking CAP On
Tomer Gabel
 
PPTX
How NOT to get lost in the current JavaScript landscape
Radosław Scheibinger
 
PPTX
Day 4 - Models
Barry Jones
 
PDF
Modern javascript
Kevin Ball
 
KEY
Becoming a more productive Rails Developer
John McCaffrey
 
KEY
Freelancing and side-projects on Rails
John McCaffrey
 
PPTX
Be faster then rabbits
Vladislav Bauer
 
PDF
Bringing Interactivity to Your Drupal Site with Node.js Integration
Acquia
 
KEY
Irb Tips and Tricks
John McCaffrey
 
PDF
CQ5 and Sling overview
Bertrand Delacretaz
 
PDF
GitBucket: The perfect Github clone by Scala
takezoe
 
PDF
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
Rakuten Group, Inc.
 
PPTX
In-browser storage and me
Jason Casden
 
PDF
Flexible UI Components for a Multi-Framework World
Kevin Ball
 
PDF
Eureka Moment UKLUG
Paul Withers
 
PDF
Masterin Large Scale Java Script Applications
Fabian Jakobs
 
PDF
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
FITC
 
PPTX
Tampering with JavaScript
Boy Baukema
 
PPTX
A tale of 3 databases
Chris Skardon
 
A web app in pure Clojure
Dane Schneider
 
Put Your Thinking CAP On
Tomer Gabel
 
How NOT to get lost in the current JavaScript landscape
Radosław Scheibinger
 
Day 4 - Models
Barry Jones
 
Modern javascript
Kevin Ball
 
Becoming a more productive Rails Developer
John McCaffrey
 
Freelancing and side-projects on Rails
John McCaffrey
 
Be faster then rabbits
Vladislav Bauer
 
Bringing Interactivity to Your Drupal Site with Node.js Integration
Acquia
 
Irb Tips and Tricks
John McCaffrey
 
CQ5 and Sling overview
Bertrand Delacretaz
 
GitBucket: The perfect Github clone by Scala
takezoe
 
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
Rakuten Group, Inc.
 
In-browser storage and me
Jason Casden
 
Flexible UI Components for a Multi-Framework World
Kevin Ball
 
Eureka Moment UKLUG
Paul Withers
 
Masterin Large Scale Java Script Applications
Fabian Jakobs
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
FITC
 
Tampering with JavaScript
Boy Baukema
 
A tale of 3 databases
Chris Skardon
 
Ad

Viewers also liked (20)

PPT
Nomenclatura e peças de container
elliando dias
 
PPTX
CLI utility in ClojureScript running on Node.js
Karolis Labrencis
 
PDF
Getting started with ClojureScript
Siva Jagadeesan
 
PDF
Some basic FP concepts
Falko Riemenschneider
 
PDF
ClojureScript Introduction
Falko Riemenschneider
 
PDF
Clojure+ClojureScript Webapps
Falko Riemenschneider
 
PDF
Clojure - Why does it matter?
Falko Riemenschneider
 
PDF
PostgreSQL: O melhor banco de dados Universo
elliando dias
 
PDF
Making design decisions in React-based ClojureScript web applications
Falko Riemenschneider
 
PDF
Learn basics of Clojure/script and Reagent
Maty Fedak
 
PDF
ClojureScript - A functional Lisp for the browser
Falko Riemenschneider
 
PDF
An Adventure in Serverless ClojureScript
Norman Richards
 
PPTX
Chalet management system (e cha m)
HoneySah
 
PDF
Hadoop - Simple. Scalable.
elliando dias
 
PDF
Writing Your Own JSR-Compliant, Domain-Specific Scripting Language
elliando dias
 
PPT
JCR Content Management
elliando dias
 
PDF
Implementing S-Expressions Based Extented Languages in LISP
elliando dias
 
PDF
Solos que não devem ser usados em olarias a frio
elliando dias
 
PPTX
SharePoint Governance and Lifecycle Management with Project Server 2010
Alexander Burton
 
PPT
Olaria de Barcelos
annabbella
 
Nomenclatura e peças de container
elliando dias
 
CLI utility in ClojureScript running on Node.js
Karolis Labrencis
 
Getting started with ClojureScript
Siva Jagadeesan
 
Some basic FP concepts
Falko Riemenschneider
 
ClojureScript Introduction
Falko Riemenschneider
 
Clojure+ClojureScript Webapps
Falko Riemenschneider
 
Clojure - Why does it matter?
Falko Riemenschneider
 
PostgreSQL: O melhor banco de dados Universo
elliando dias
 
Making design decisions in React-based ClojureScript web applications
Falko Riemenschneider
 
Learn basics of Clojure/script and Reagent
Maty Fedak
 
ClojureScript - A functional Lisp for the browser
Falko Riemenschneider
 
An Adventure in Serverless ClojureScript
Norman Richards
 
Chalet management system (e cha m)
HoneySah
 
Hadoop - Simple. Scalable.
elliando dias
 
Writing Your Own JSR-Compliant, Domain-Specific Scripting Language
elliando dias
 
JCR Content Management
elliando dias
 
Implementing S-Expressions Based Extented Languages in LISP
elliando dias
 
Solos que não devem ser usados em olarias a frio
elliando dias
 
SharePoint Governance and Lifecycle Management with Project Server 2010
Alexander Burton
 
Olaria de Barcelos
annabbella
 
Ad

Similar to Clojurescript slides (20)

PDF
Modern ClojureScript
Wen Chun Lin
 
PDF
Clojure Lightning Talk
GiltTech
 
PDF
HelsinkiJS - Clojurescript for Javascript Developers
Juho Teperi
 
PDF
CLJS Presentation
Žilvinas Urbonas
 
PPTX
Why clojure(script) matters
Claudiu Apetrei
 
PDF
The Case for React.js and ClojureScript
Murilo Pereira
 
PDF
Clojure in real life 17.10.2014
Metosin Oy
 
PDF
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
GeeksLab Odessa
 
PDF
Jslab rssh: JS as language platform
Ruslan Shevchenko
 
PDF
The Ideas of Clojure - Things I learn from Clojure
Hsuan Fu Lien
 
PDF
Webbisauna - ClojureScript for Javascript Developers
Juho Teperi
 
PDF
REPL Driven Mobile Development with Clojure(script)
Srihari Sriraman
 
PDF
A New Baseline for Front-End Devs
Rebecca Murphey
 
PDF
Exploring Clojurescript
Luke Donnet
 
PDF
ClojureScript for the web
Michiel Borkent
 
PDF
Functional Programming in Clojure
Troy Miles
 
PDF
Welcome to ClojureScript
Ikuru Kanuma
 
PDF
Clojure made-simple - John Stevenson
JAX London
 
PDF
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
John Stevenson
 
ODP
Clojure made simple - Lightning talk
John Stevenson
 
Modern ClojureScript
Wen Chun Lin
 
Clojure Lightning Talk
GiltTech
 
HelsinkiJS - Clojurescript for Javascript Developers
Juho Teperi
 
CLJS Presentation
Žilvinas Urbonas
 
Why clojure(script) matters
Claudiu Apetrei
 
The Case for React.js and ClojureScript
Murilo Pereira
 
Clojure in real life 17.10.2014
Metosin Oy
 
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
GeeksLab Odessa
 
Jslab rssh: JS as language platform
Ruslan Shevchenko
 
The Ideas of Clojure - Things I learn from Clojure
Hsuan Fu Lien
 
Webbisauna - ClojureScript for Javascript Developers
Juho Teperi
 
REPL Driven Mobile Development with Clojure(script)
Srihari Sriraman
 
A New Baseline for Front-End Devs
Rebecca Murphey
 
Exploring Clojurescript
Luke Donnet
 
ClojureScript for the web
Michiel Borkent
 
Functional Programming in Clojure
Troy Miles
 
Welcome to ClojureScript
Ikuru Kanuma
 
Clojure made-simple - John Stevenson
JAX London
 
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
John Stevenson
 
Clojure made simple - Lightning talk
John Stevenson
 

More from elliando dias (20)

PDF
Geometria Projetiva
elliando dias
 
PDF
How to Make an Eight Bit Computer and Save the World!
elliando dias
 
PDF
Ragel talk
elliando dias
 
PDF
A Practical Guide to Connecting Hardware to the Web
elliando dias
 
PDF
Introdução ao Arduino
elliando dias
 
PDF
Minicurso arduino
elliando dias
 
PDF
Incanter Data Sorcery
elliando dias
 
PDF
Rango
elliando dias
 
PDF
Fab.in.a.box - Fab Academy: Machine Design
elliando dias
 
PDF
The Digital Revolution: Machines that makes
elliando dias
 
PDF
Hadoop + Clojure
elliando dias
 
PDF
Hadoop and Hive Development at Facebook
elliando dias
 
PDF
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 
PDF
From Lisp to Clojure/Incanter and RAn Introduction
elliando dias
 
PDF
FleetDB A Schema-Free Database in Clojure
elliando dias
 
PDF
Clojure and The Robot Apocalypse
elliando dias
 
PDF
Clojure - A new Lisp
elliando dias
 
PDF
Clojure - An Introduction for Lisp Programmers
elliando dias
 
PDF
Clojure - An Introduction for Java Programmers
elliando dias
 
PDF
Clojure and Modularity
elliando dias
 
Geometria Projetiva
elliando dias
 
How to Make an Eight Bit Computer and Save the World!
elliando dias
 
Ragel talk
elliando dias
 
A Practical Guide to Connecting Hardware to the Web
elliando dias
 
Introdução ao Arduino
elliando dias
 
Minicurso arduino
elliando dias
 
Incanter Data Sorcery
elliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
elliando dias
 
The Digital Revolution: Machines that makes
elliando dias
 
Hadoop + Clojure
elliando dias
 
Hadoop and Hive Development at Facebook
elliando dias
 
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
elliando dias
 
FleetDB A Schema-Free Database in Clojure
elliando dias
 
Clojure and The Robot Apocalypse
elliando dias
 
Clojure - A new Lisp
elliando dias
 
Clojure - An Introduction for Lisp Programmers
elliando dias
 
Clojure - An Introduction for Java Programmers
elliando dias
 
Clojure and Modularity
elliando dias
 

Recently uploaded (20)

PDF
Best ERP System for Manufacturing in India | Elite Mindz
Elite Mindz
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PPT
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
Chapter 1 Introduction to CV and IP Lecture Note.pdf
Getnet Tigabie Askale -(GM)
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPTX
Coupa-Overview _Assumptions presentation
annapureddyn
 
PDF
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
PDF
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
SMACT Works
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PDF
DevOps & Developer Experience Summer BBQ
AUGNYC
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Best ERP System for Manufacturing in India | Elite Mindz
Elite Mindz
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Chapter 1 Introduction to CV and IP Lecture Note.pdf
Getnet Tigabie Askale -(GM)
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Coupa-Overview _Assumptions presentation
annapureddyn
 
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
SMACT Works
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
DevOps & Developer Experience Summer BBQ
AUGNYC
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 

Clojurescript slides

  • 3. Clojure ... rocks
  • 4. Clojure ... rocks JavaScript ...
  • 5. Clojure ... rocks JavaScript ... reaches
  • 7. Why ClojureScript? • JavaScript is the only programming technology in key environments • e.g. the browser • has the greatest reach in mobile • but is not very robust • While demand for sophisticated applications increases
  • 8. Rationale • Clojure is arguably simpler, more powerful and more robust than JS • JS VMs getting faster • Clojure on JS empowers developers
  • 9. Strategy • Compile (a substantial subset of) Clojure to JS source • Leverage best-of-breed JS approaches • Look beyond the browser
  • 10. Non-Objectives • Complete Clojure • Portable large applications • Browser REPL demos etc • The target is production applications
  • 11. Tactics • ClojureScript in Clojure(Script) • ClojureScript on (Google) Closure
  • 12. ClojureScript in Clojure(Script) • Compiler written in Clojure • Macros written in Clojure • Library written in ClojureScript • No JavaScript source files
  • 13. CinC • Core abstractions are protocols • Data structures are deftypes • Excellent mapping to JS under the hood
  • 14. REPL • Written in Clojure • Hosts embedded Rhino • Compiles to JS on the fly • Rhino evals
  • 15. Google Closure • Production Code • Closure Compiler • virtually all of Google’s JS goes through this • Closure Library • Used by Google Gmail, Maps, Docs, Sites, Books, Reader, Calendar, Photos, Google+
  • 16. Why Give Google Closure Away? • Be cool • Make friends • See if it sticks • Not using it anymore • Sucker community into maintaining • They want the web to win as an application platform
  • 17. Closure Compiler • Optimizing Compiler • Whitespace only • Within-function • Whole program (advanced mode) • Try it: • http://closure-compiler.appspot.com/home
  • 18. Another Minifier, yawn • No! • Closure compiler does symbol replacement • but also expression rewriting, transformation • Dead code elimination • read as: uncalled code elimination
  • 19. Why Whole Program Optimization Matters • Libraries • Large libraries • Many libraries • Sum of many minified libs is large again • What % of each lib do you use in one app? • Diminishing returns from delayed loading and modularity efforts
  • 20. Making it work • Convention, and lots of it • Welcome to Javascript! • Trickiness abounds - string access to properties, exporting, side-effects • Google’s conventions not widely followed • What if we had a Javascript-emitting language that always emitted advanced- mode compatible code?
  • 21. Closure Library • Huge! • UI, events, DOM, communications, testing, algorithms and data structures... • Packaging and dependency resolution • Yet, not • Symbiotic with Closure compiler • Your app will include only the code it uses • require lib != use all of it
  • 22. Whole-program Optimization for the Win • Google has decided this is the key to delivering • rich applications • over thin wires • to memory constrained devices • Given away sophisticated tools for making that work
  • 23. ClojureScript on (Google) Closure • Emits advanced-mode compatible code • encapsulates conventions • Participates in dependency system • maps Clojure namespaces to Google’s optimizable format • Profit! - whole-program optimization and large library support
  • 24. Find Out More “The O’Reilly [kloh-zher] book - you know, with the bird on the front”
  • 25. What’s There • Compiler • REPL • Primitives • Arity overloading • Macros
  • 26. What’s There • Seqs, maps, vectors, sets • and much of supporting library • Symbols, keywords • Destructuring • Regex
  • 27. What’s There • deftypes • core datatypes • protocols • all abstractions • extend-type, extend-protocol • can extend primitives e.g. string, nil, default • Both defined in terms of primitives
  • 28. What’s There • 2500+ lines of core lib • clojure.string • clojure.set • clojure.walk • clojure.zip
  • 29. What’s There • Reader • Why, given JSON? • Sets, keywords, symbols • Metadata • Great fit when Clojure on the server
  • 30. What’s There • Namespaces • integrated with Google Closure provide/ require • compile-file, build project, including • deps calculation • invocation of Google Closure compiler
  • 31. What’s Not (yet) • Full collection persistence • defrecord • multimethods/hierarchy • Full numerics • Testing • Misc core library
  • 32. What Won’t Be • Thread-related things • eval and runtime compilation • structs, proxy, Java type-stuff • Runtime reification of • Vars, namespaces, protocols etc
  • 33. It’s Alpha! • Bugs • Missing bits • Rough edges • Work to do
  • 34. Who Did This? • Clojure/core and friends: Aaron Bedra, Alan Dipert, Alex Redington Bobby Calderwood, Brenton Ashworth Chris Houser, Devin Walters, Eric Thorsen Frank Failla, Michael Fogus, Jess Martin Luke VanderHart, Chris Redinger, Jonathan Claggett Stuart Halloway, Stuart Sierra, Tom Hickey
  • 35. Participating • This is a Clojure/dev project • all with Clojure CAs welcome to participate • Plenty to do • Libraries • Environment • Tooling
  • 36. Face Time • The Conj! • Nov. 10-12 Raleigh, NC • With training: Nov. 7 -12 • http://clojure-conj.org/ • Early registration ends soon • Core Fridays
  • 37. Demo • REPL • Compilation • Web app • CLI app
  • 38. Summary • ClojureScript is • Clojure's client story • Clojure's mobile story • Clojure's CLI scripting story • The power of Clojure • The reach of JavaScript