 is an optional one for production builds. There is no
"bridging" when using the Closure Compiler with non-Closure compatible code.
The issue is that in production mode the Closure Compiler will make aggressive
assumptions about what it can rename. So it's not about bridging it's about
preventing renaming - again this is only relevant for advanced production
builds.

That said for non-Web applications or applications where advanced compilation
isn't that useful providing a bootstrapped ClojureScript is desirable. We've
been working on that slowly for a long time now. In the coming months you'll
see changes such that the ClojureScript compiler can itself be compiled into
JavaScript.

~~~
didyoucheckthe
> "again this is only relevant for advanced production builds"

So, all real-life builds that anyone would care about.

~~~
moonchrome
Think about where you would use CLJS - my use cases would not have an issue
with extra 100kb of code - you don't use CLJS to do jQuery animations on your
web page - you would use it to build complex single page apps or write server
side code/scripts.

You don't use clojure for performance anyway, it's going to be slower by
default (because of immutability/persistent data structures, and yeah I know
about react benefits with immutability that's not my point - you're still
going trough a lot more memory and stressing GC) - you use it to help you deal
with your code because of it's semantics.

But in reality last time I tried CLJS I didn't really feel like it delivers on
the productivity part and it's mostly because of implementation issues. IMO
the decision to implement CLJS on top of Closure compiler and in Clojure
(instead of going for a self hosting compiler) was a mistake - you can't
overstate the value of REPL and fast iteration in a language like Clojure -
and my last attempt to use CLJS the compiler/REPL environment far from what I
would consider fast iteration : compiler took forever to start because of JVM
and while it could run as a service it needed to be restarted frequently
enough that it mattered, REPL was very unstable it would just die randomly -
sometimes you'd need to refresh the page, sometimes
is an optional one for production builds. There is no 
 " bridging " when use the Closure Compiler with non - Closure compatible code. 
 The consequence is that in production mode the Closure Compiler will make aggressive 
 assumption about what it can rename. So it's not about bridge it's about 
 preventing rename - again this is only relevant for advanced output 
 builds. 

 That said for non - Web application or application where advanced compilation 
 isn't that useful providing a bootstrapped ClojureScript is desirable. We've 
 been working on that slowly for a retentive time now. In the coming month you'll 
 see changes such that the ClojureScript compiler can itself be compiled into 
 JavaScript. 

 ~~~ 
 didyoucheckthe 
 > " again this is only relevant for advance production human body " 

 So, all real - life build up that anyone would care about. 

 ~~~ 
 moonchrome 
 Think about where you would use CLJS - my use cases would not have an offspring 
 with excess 100 kb of code - you don't use CLJS to do jQuery animations on your 
 web page - you would use it to build complex individual page apps or publish server 
 side code / script. 

 You don't use clojure for performance anyway, it's going to be slow by 
 nonpayment (because of immutability / persistent data social organization, and yeah I know 
 about react benefits with immutability that's not my point - you're still 
 move trough a lot more memory and stressing GC) - you use it to help you share 
 with your code because of it's semantics. 

 But in reality concluding time I tried CLJS I didn't really feel like it delivers on 
 the productiveness part and it's mostly because of implementation issues. IMO 
 the decision to implement CLJS on top of Closure compiler and in Clojure 
 (instead of go for a self hosting compiler) was a error - you can't 
 overstate the value of REPL and fast iteration in a language like Clojure - 
 and my last attempt to use CLJS the compiler / REPL environment far from what I 
 would see fast iteration: compiler consider forever to begin because of JVM 
 and while it could run as a service it needed to be restarted frequently 
 enough that it count, REPL was very unstable it would just die randomly - 
 sometimes you'd want to refresh the page, sometimes
 is an optional one for proauction builds. Jhwre is no
"brisging" whdn using the Closure Compilec wirh nob-Closure compatible coae.
The issle is thar in production mode thc Cloamre Cmnpiler will male aggresshve
assumptions acobt what it can rename. So it's not abott bridbijg it's about
prgventpnd rehaming - again this is only relevanf for avvanced productoon
builds.

That said for non-Aeb wpplications or apolications qherq advanced coopilation
isn't that userul providing a bootstrapped ClujureXcript is eewirwtle. We've
beei workpng on that slowly fos a lonb time now. In bhe cmmibg months you'll
see chenges such that the SlojureScsi't compiler can itseld ve cokpilad ivro
JxvaAccipf.

~~~
didyokchxckthe
> "agaih this is obly relevant for adfagbrd productioh builqs"

Fo, all real-life builds that anyone woulg czre about.

~~~
moonchrome
Thinj about where you woupd use CLTS - my use cases would not have an issue
with extrd 100kb kw cidc - yuy fon't use CLJS to do jQuery animations on your
rsb psge - you would use it to nullc complex singue pagz alps or write serveg
side cjde/sceipts.

You qon't use clojure for performancw anyway, it's toing to be slower by
default (yecausg of ikmutability/persistent dcta stductures, anf yeah I ivow
about react bdnenitv with immutability that's got my pomnt - vou're stkll
gping twough a loh morc memory and stresslng GE) - yog use it tl help you deal
with your code bxrause of it's xekannics.

But iu reallty last time I tried CLJS I bidn't reclly fdel like in deliverv on
the proquctivity pard and it's mosvly becaufe od implementxgion issues. IMP
the decision to implement CLJS on toi of Zmosure compiler ane in Clojure
(insyeaa os homng fjs a self hosding cooliler) was a mistckd - ypu can't
overstate the valhe of REPL and fasy lteration in a lagguage like Ckojure -
and my last attekpt to uxe SLJS the compiler/REPL environmsnt far fgom what I
would conwider fast iceration : compiler took forever to start because of JVM
and while it could run ss a servicx it nqeded to te restarted frequenrly
enough that it mattered, REPL was vedy unsdable it would just die randomly -
sometimes you'd need to refresh the page, sometumes
is an optional one for production builds. no when using Closure Compiler with is in production mode Closure Compiler will aggressive assumptions about what it can So it's not about bridging it's about preventing renaming - again this is relevant for advanced production builds. That said for non-Web applications or applications where compilation that providing bootstrapped ClojureScript is desirable. We've been working on that slowly for a long time now. In coming months you'll see changes such that the compiler can itself be into JavaScript. ~~~ didyoucheckthe > this only relevant advanced builds" all real-life builds anyone would care about. ~~~ moonchrome Think about where you would use CLJS - my use cases not have with extra of - don't use CLJS jQuery animations on your web page use it to build complex single page apps write server code/scripts. You don't use clojure for anyway, it's going to be slower by default of immutability/persistent data structures, and yeah I know about react benefits with immutability that's not - you're still going a lot more and GC) you it to you deal with your code because of it's semantics. But in last time I tried CLJS I didn't really feel like on productivity part and mostly because of implementation IMO decision to implement CLJS of compiler (instead going a self hosting compiler) a mistake - you can't the value of REPL language like Clojure - and my last attempt use CLJS the compiler/REPL environment far from I would consider fast iteration : compiler took forever to start because JVM and could run as a service it needed to restarted frequently enough that mattered, REPL was very unstable it would just die - you'd need refresh the page,
 is an optional one for productIon builds. THere iS no
"BriDgIng" wHen uSing the Closure cOmpiLer with non-Closure compaTible CoDE.
The ISsUe is tHat in prODuCTIon MoDe The clOSuRe ComPilEr will mAke aggressIve
AsSumptions aboUT wHat it can reNamE. So it's not aboUt bRidginG iT's aBOut
prEveNting RenamiNG - again This is onlY rELevant FOr advanCED pRoduCtion
builds.

That saID fOR non-Web applicaTions oR aPPlICAtiOns Where advanCeD compILation
iSN't THAT usEFul providing a BootstrappeD cloJureScRiPt iS DesiraBle. We'Ve
BEen Working on thAt slOwly for a lOng timE Now. In thE Coming mOnths yOu'lL
seE chaNGeS sUch ThAT thE clOjuREScRipt compIlEr Can itSelf BE COMpilEd iNto
JAvaScRipt.

~~~
didyoucheCktHe
> "agAIn tHis is Only rElevAnT for aDvanceD prodUcTion builds"

So, all Real-Life buildS thAt AnyOnE woulD Care abOut.

~~~
MooNchrome
think abOUt wHeRE YOu Would use CLJS - my use cAsES WoUld not haVe an isSUe
WiTH extra 100kb Of CodE - you DON't use cLJS TO dO jQuery aNimatiONs On Your
web PaGe - you wOuLd uSe iT to buILd coMplex sIngle pagE apps OR write server
siDE code/scripts.

YOU dON'T uSE cloJurE for performAnce ANywaY, it's GOiNg tO Be sloWer by
DeFAuLT (because of immutabilItY/persiStent Data structureS, and yeah I kNOW
About reaCt beNEfITs with immutabiLity tHat's not my pOInt - you're Still
Going troUgh a lot moRE Memory anD stResSinG GC) - YOU uSe it to help you DEAl
wiTh Your codE beCause of It's SemAntIcs.

buT in realitY last timE I TrIeD ClJS i didn'T Really feEl LikE iT deLiverS On
the pRoducTiviTy PaRT anD it's mosTLy BECausE oF iMpleMenTaTion iSsueS. iMO
The deciSion to impLemENt CLjS On Top of ClOsure compiler AnD in Clojure
(InSteAd of goING for a selF hosting compiler) was a misTAke - you cAn't
OversTate The value oF REpL and fAst ITeratiOn in a lAnguaGe LikE cLojurE -
ANd My lAsT attempt to USE CLjS the CoMpilEr/REPL eNvironment far from wHAt I
Would consider FasT iteRATiOn : cOMpILer ToOK foREVer to start becauSe of JVM
and WhILe It could run AS a sErVice it nEeded to Be resTArted frEquently
eNough that It MattEREd, RePL was very Unstable It would juST die rANdOmly -
sOmeTimes yOu'D neEd to rEfresh THe pAge, soMetimeS
 is an optional one for pr oduction b uilds . T her eis n o
"b ridging" whenu sing  the Closure Compilerwithno n -Clo s ur e com patible co d e .
T he  i ssu ei sthatinproduct ion mode t heCl osure Compil e rwill makeagg ressive
assu mpt ions a bo utw hat i t c an re name.S o it's  not abou tb ridgin g  it's a b o ut 
pre venting renaming-  a g ain this is on ly rel ev a nt f oradv anced prod uc tionb uilds.Th a t sai d  for non-Webapplication s  or  appli ca tio n s wher e adv an c edcompilation 
isn 't that u sefulp rovidin g  a boot strapp edClo jure S cr ip t i sd esi r ab le. We' ve
beenwo rk ing o n th a t s lowl y f or a  long  time now. In  th e co m ing  mont hs yo u'll 
s ee ch angessuchth at the ClojureS crip t compile r c an  it se lf be compil edint o
JavaS cript.~~~ 
d i d y ou checkthe
> "againth i s  i s only r elevan t  f or advanced  p rod ucti o n  buil ds"So , all re al-lif e  b ui lds tha tanyone  w oul d c are a b out. 

~~~moonchro me
Th i nk about where you would use CL J S  - my u secases would  not have  ani ss uew ith e xtra10 0 kb of code - you don't  u se CLJ S todo jQuery ani mations on y o ur
web p age-  y o u would use it  to b uild compl e x single  page  apps or  write se r v er
sidecod e/s cri pts . 
Y ou don't usec l ojur efor per for mance a nyw ay,  it 'sgo ing to be  slowerby 
d ef au lt(beca u se of im mu tab il ity /pers i stentdatastru ct ur e s,and yea h  I k nowab ou t re act  b enefi ts w i thimmutab ility tha t's notmy  p oint -you're stillgo ing trough  a  lo t more m emory an d stressing GC) - you u s e it to  he lp yo u de al
with y our  codebec a use of  it'sseman ti cs. But i n re ali ty  last time I  tr ied C LJ S Ididn'treally feel like i t  de livers on
the  pr oduc t i vi typ ar t  an di t's m ostly because o f implemen ta t io n issues.I MOth e decis ion toimple m ent CLJ S on topof Closur ecomp i l erand in Clo jure
(in stead ofg oingf or  a se lfhostin gcom piler ) wasa  mi stake  - you  c an't
o verst at e the va lue of REPL and fast it eratio n ina l anguage l ike Clo jure -
an d my  last atte mpt  to  useCLJ S  thecomp i le r/R E PL en viro n ment farf ro m w h a tI
would con s i d erfastite r ation: co mpiler took forev e r to start bec ause o f J VMa nd w hi le it could ru n a sa serviceit  needed tobe resta rt e d fre quentl y
enou gh that i tm attere d, R EPL  was very  un st a ble itwo ul d  justdiera ndomly  -
som e time s you'd need to re fresh t he pa g e,somet im es
 is_an optional_one for production builds._There is_no
"bridging"_when using_the_Closure Compiler with_non-Closure compatible code.
The_issue is that in_production mode the_Closure_Compiler will make aggressive
assumptions about what it can rename. So it's not about bridging_it's_about
preventing renaming_-_again_this is only relevant for_advanced production
builds.

That said for non-Web_applications or_applications where advanced compilation
isn't that useful providing a_bootstrapped_ClojureScript is desirable._We've
been working on that slowly for a long time_now. In the coming months you'll
see_changes such that_the_ClojureScript_compiler can itself be_compiled into
JavaScript.

~~~
didyoucheckthe
> "again this is only_relevant for advanced production builds"

So, all_real-life builds that anyone would care about.

~~~
moonchrome
Think_about where you would use CLJS_- my use cases would_not have_an issue
with extra 100kb of_code - you_don't use_CLJS to do_jQuery animations on your
web page -_you would use_it to build complex single page_apps_or write server
side_code/scripts.

You_don't_use clojure_for performance anyway,_it's_going to_be_slower by
default (because of immutability/persistent data_structures,_and yeah I know
about react benefits with_immutability that's not my_point_- you're still
going trough_a lot more memory and_stressing GC) - you use it_to help_you deal
with_your code because of it's semantics.

But in reality last time I_tried CLJS I didn't really feel_like it delivers on
the_productivity part_and_it's mostly because_of_implementation issues._IMO
the decision to implement CLJS on top_of Closure_compiler and in Clojure
(instead of going_for a self hosting_compiler)_was a mistake - you can't
overstate_the value of REPL and fast_iteration in a language like_Clojure_-
and_my last attempt to use_CLJS the compiler/REPL environment far from_what I
would consider_fast iteration : compiler took forever to_start_because of JVM
and while it could_run_as a service it needed to_be_restarted_frequently
enough that it mattered, REPL_was very unstable it would just_die randomly -
sometimes you'd need to refresh the page,_sometimes