Archive for October, 2013

Duetto: a C++ compiler for the Web going beyond emscripten and node.js

logo_duetto_quadrato_192

Today Lean­ing Tech­nolo­gies Ltd. releases duetto, a com­piler designed to develop inte­grated (back­end and fron­tend) web appli­ca­tions in C++. duetto is now avail­able to the pub­lic as FOSS here, and will be offered in a com­mer­cial pack­age with closed-source-friendly licens­ing soon.

Browser-based appli­ca­tions will undoubt­edly play a big role in the future of both con­sumer and busi­ness appli­ca­tions. Web apps have some clear advan­tages com­pared to native appli­ca­tions, like being natively cloud-based and col­lab­o­ra­tive, while also being inher­ently portable, espe­cially thanks to the increased atten­tion that browser ven­dors have ded­i­cated to web stan­dard com­pli­ancy. Mod­ern web stan­dards, that usu­ally go under the umbrella term HTML5, pro­vide incred­i­ble close-to-native capa­bil­i­ties and this gap will be shrink­ing with time.

Sev­eral tools have been devel­oped to help pro­gram­mers in writ­ing large-scale Web appli­ca­tion fron­tends, reduc­ing the lim­i­ta­tions and obsta­cles given by Javascript: Coffe­Script, Microsoft Type­Script, Google Dart, Google GWT and, more recently, emscripten, which com­piles LLVM byte­code (and there­fore C++) to Javascript. On the server side, it is com­mon to use lan­guages such as PHP, Python and Ruby, lead­ing to a sep­a­rate back­end code­base in a lan­guage other than Javascript. This causes dupli­ca­tion of code (and new bugs), hav­ing to deal with RPC man­u­ally, and over­all takes time away from proper devel­op­ment. A very pop­u­lar solu­tion for this has been to use Javascript on the server as well with node.js.

We present duetto, our C++ com­piler for the Web, which is now avail­able to the pub­lic. Our solu­tion inte­grates and sur­passes fea­tures of exist­ing tools, and allows to pro­gram both the fron­tend and the back­end of a Web appli­ca­tion in an inte­grated C++ code­base, com­pil­ing them respec­tively to JavaScript and native code.

Duetto com­bines the advan­tages of emscripten and node.js by allow­ing the pro­gram­mer to:

  • write web appli­ca­tions in C++, reusing exist­ing code and mak­ing port­ing of whole appli­ca­tions and games to the browser plausible.

  • code both the fron­tend and the back­end of a web appli­ca­tion in the same lan­guage and codebase

In addi­tion to this, duetto pro­vides some nice features:

  • Bring the robust­ness and proven scal­a­bil­ity of C++ pro­gram­ming to the Web

  • You can access all browser APIs directly. Duetto inher­its the C++ phi­los­o­phy of expos­ing the plat­form capa­bil­i­ties (and lim­i­ta­tions) to the users. There is no mid­dle man.

  • Duetto is based on LLVM/clang. An indus­try stan­dard C++ com­piler is a programmer’s best friend: code san­ity is ver­i­fied as com­pile time, includ­ing RPC signatures.

  • The LLVM tool­chain also guar­an­tees that a mind-blowing set of opti­miza­tions is run at com­pile time, gen­er­at­ing highly effi­cient code. This decreases the bur­den on JavaScript JIT com­piler at runtime.

  • Con­trar­ily to emscripten we do not try to emu­late a tra­di­tional address space using typed arrays, but directly map C++ objects to JS objects. This reduces mem­ory con­sump­tion since the garbage col­lec­tor can delete unused object.

Are you inter­ested in using duetto? You can now. We have just released the whole tech­nol­ogy as a FOSS project, avail­able here.  Also, we’ve stuck to our promise of releas­ing in six months from our first announce­ment in April

The com­piler itself, derived from LLVM/clang is released with the same license as LLVM/clang (UI/NCSA) and we plan to con­tribute gen­er­ally use­ful code upstream. Accom­pa­ny­ing head­ers and libraries will be released as GPLv2+. We will be also offer­ing closed source friendly licens­ing of such com­po­nents for a fee. Here are links to the var­i­ous repos­i­to­ries on github:

Release tar­balls will be avail­able shortly on the Launch­pad page of the project: https://launchpad.net/duetto. Launch­pad will also be our bug report­ing sys­tem, so please use it to report any prob­lem you might find. We will be also pro­vid­ing builds of duetto for Ubuntu linux using a PPA. We plan to pro­vide binary builds for Mac OS X and Win­dows as well, but we are still work­ing on automat­ing those build.

Please sub­scribe to our Launch­pad group/mailing list to dis­cuss bugs, desired fea­tures and usabil­ity issues on https://launchpad.net/~duetto-users. You can also fol­low us on twit­ter (@leaningtech) and visit our web­site to be updated on duetto related news:

6 Comments

Duetto: a C++ compiler for the Web going beyond emscripten and node.js

logo_duetto_quadrato_192

Today Lean­ing Tech­nolo­gies Ltd. releases duetto, a com­piler designed to develop inte­grated (back­end and fron­tend) web appli­ca­tions in C++. duetto is now avail­able to the pub­lic as FOSS here, and will be offered in a com­mer­cial pack­age with closed-source-friendly licens­ing soon.

Browser-based appli­ca­tions will undoubt­edly play a big role in the future of both con­sumer and busi­ness appli­ca­tions. Web apps have some clear advan­tages com­pared to native appli­ca­tions, like being natively cloud-based and col­lab­o­ra­tive, while also being inher­ently portable, espe­cially thanks to the increased atten­tion that browser ven­dors have ded­i­cated to web stan­dard com­pli­ancy. Mod­ern web stan­dards, that usu­ally go under the umbrella term HTML5, pro­vide incred­i­ble close-to-native capa­bil­i­ties and this gap will be shrink­ing with time.

Sev­eral tools have been devel­oped to help pro­gram­mers in writ­ing large-scale Web appli­ca­tion fron­tends, reduc­ing the lim­i­ta­tions and obsta­cles given by Javascript: Coffe­Script, Microsoft Type­Script, Google Dart, Google GWT and, more recently, emscripten, which com­piles LLVM byte­code (and there­fore C++) to Javascript. On the server side, it is com­mon to use lan­guages such as PHP, Python and Ruby, lead­ing to a sep­a­rate back­end code­base in a lan­guage other than Javascript. This causes dupli­ca­tion of code (and new bugs), hav­ing to deal with RPC man­u­ally, and over­all takes time away from proper devel­op­ment. A very pop­u­lar solu­tion for this has been to use Javascript on the server as well with node.js.

We present duetto, our C++ com­piler for the Web, which is now avail­able to the pub­lic. Our solu­tion inte­grates and sur­passes fea­tures of exist­ing tools, and allows to pro­gram both the fron­tend and the back­end of a Web appli­ca­tion in an inte­grated C++ code­base, com­pil­ing them respec­tively to JavaScript and native code.

Duetto com­bines the advan­tages of emscripten and node.js by allow­ing the pro­gram­mer to:

  • write web appli­ca­tions in C++, reusing exist­ing code and mak­ing port­ing of whole appli­ca­tions and games to the browser plausible.

  • code both the fron­tend and the back­end of a web appli­ca­tion in the same lan­guage and codebase

In addi­tion to this, duetto pro­vides some nice features:

  • Bring the robust­ness and proven scal­a­bil­ity of C++ pro­gram­ming to the Web

  • You can access all browser APIs directly. Duetto inher­its the C++ phi­los­o­phy of expos­ing the plat­form capa­bil­i­ties (and lim­i­ta­tions) to the users. There is no mid­dle man.

  • Duetto is based on LLVM/clang. An indus­try stan­dard C++ com­piler is a programmer’s best friend: code san­ity is ver­i­fied as com­pile time, includ­ing RPC signatures.

  • The LLVM tool­chain also guar­an­tees that a mind-blowing set of opti­miza­tions is run at com­pile time, gen­er­at­ing highly effi­cient code. This decreases the bur­den on JavaScript JIT com­piler at runtime.

  • Con­trar­ily to emscripten we do not try to emu­late a tra­di­tional address space using typed arrays, but directly map C++ objects to JS objects. This reduces mem­ory con­sump­tion since the garbage col­lec­tor can delete unused object.

Are you inter­ested in using duetto? You can now. We have just released the whole tech­nol­ogy as a FOSS project, avail­able here.  Also, we’ve stuck to our promise of releas­ing in six months from our first announce­ment in April

The com­piler itself, derived from LLVM/clang is released with the same license as LLVM/clang (UI/NCSA) and we plan to con­tribute gen­er­ally use­ful code upstream. Accom­pa­ny­ing head­ers and libraries will be released as GPLv2+. We will be also offer­ing closed source friendly licens­ing of such com­po­nents for a fee. Here are links to the var­i­ous repos­i­to­ries on github:

Release tar­balls will be avail­able shortly on the Launch­pad page of the project: https://launchpad.net/duetto. Launch­pad will also be our bug report­ing sys­tem, so please use it to report any prob­lem you might find. We will be also pro­vid­ing builds of duetto for Ubuntu linux using a PPA. We plan to pro­vide binary builds for Mac OS X and Win­dows as well, but we are still work­ing on automat­ing those build.

Please sub­scribe to our Launch­pad group/mailing list to dis­cuss bugs, desired fea­tures and usabil­ity issues on https://launchpad.net/~duetto-users. You can also fol­low us on twit­ter (@leaningtech) and visit our web­site to be updated on duetto related news:

6 Comments

Duetto (C++ for the Web) to be released soon: licensing model

logo_duetto_quadrato_192

Duetto — our C++ com­piler for the Web — is get­ting close to its first pub­lic release, due in a few days, and we would like to spend a few lines to present and explain our licens­ing model, as many peo­ple have been ask­ing recently.

When we started  work­ing on duetto around a year ago, we knew that we were going to release it as a FOSS project. We believe that duetto, by enabling truly seam­less client/server C++ pro­gram­ming, can become a corner-stone of Web appli­ca­tions and games devel­op­ment. But this can only hap­pen if an ecosys­tem of libraries, exten­sions and frame­works will be built around duetto itself. We know that the only way for this to hap­pen is to make the core of our tech­nol­ogy avail­able to every­one, for free. In addi­tion to that, since duetto is heav­ily based on the LLVM/clang frame­work and could not have existed oth­er­wise, we really feel that giv­ing back to the com­mu­nity is the most fair thing to do.

At the same time, we have also always been deter­mined to build a com­pany around this project. For this rea­son, we will be offer­ing a pre­mium pack­age that includes the same core FOSS tech­nol­ogy plus per­son­al­ized sup­port, pro­pri­etary friendly licens­ing and aux­il­iary perks includ­ing, but not lim­ited to, inte­gra­tion with devel­op­ment environments.

Let’s now talk licenses. The duetto com­piler itself is derived from LLVM and clang, both released under the Uni­ver­sity of Illinois/NCSA Open Source License. We are releas­ing our duetto com­piler under the same license, both to make it eas­ier for the com­mu­nity to con­tribute with code, to con­tribute back with some of our code to LLVM and clang, and because it does not make much sense to use a dual licens­ing scheme on a compiler.

In addi­tion to the com­piler, there are a bunch of head­ers and libraries which are essen­tials to develop using duetto. All those will be released under a clas­sic dual licens­ing scheme: GPLv2 for every­one and a pro­pri­etary non-copyleft license for pay­ing customers.

To sum­ma­rize, here is how duetto licens­ing will work:

  • duetto core com­piler: Uni­ver­sity of Illinois/NCSA Open Source License (like the LLVM and clang projects)

  • duetto core libraries/headers: dual license GPLv2; pro­pri­etary non-copyleft license avail­able for a fee

  • duetto pre­mium fea­tures: pro­pri­etary and closed source, avail­able for a fee

We think this choice rep­re­sents a good bal­ance between being open and giv­ing back to the open source com­mu­nity, and build­ing a viable busi­ness model. We hope the open source com­mu­nity will appre­ci­ate our choice!

 Fol­low us on twit­ter @leaningtech and visit our web­site http://www.leaningtech.com to get updates on our upcom­ing release and for fur­ther information.

6 Comments

Duetto (C++ for the Web) to be released soon: licensing model

logo_duetto_quadrato_192

Duetto — our C++ com­piler for the Web — is get­ting close to its first pub­lic release, due in a few days, and we would like to spend a few lines to present and explain our licens­ing model, as many peo­ple have been ask­ing recently.

When we started  work­ing on duetto around a year ago, we knew that we were going to release it as a FOSS project. We believe that duetto, by enabling truly seam­less client/server C++ pro­gram­ming, can become a corner-stone of Web appli­ca­tions and games devel­op­ment. But this can only hap­pen if an ecosys­tem of libraries, exten­sions and frame­works will be built around duetto itself. We know that the only way for this to hap­pen is to make the core of our tech­nol­ogy avail­able to every­one, for free. In addi­tion to that, since duetto is heav­ily based on the LLVM/clang frame­work and could not have existed oth­er­wise, we really feel that giv­ing back to the com­mu­nity is the most fair thing to do.

At the same time, we have also always been deter­mined to build a com­pany around this project. For this rea­son, we will be offer­ing a pre­mium pack­age that includes the same core FOSS tech­nol­ogy plus per­son­al­ized sup­port, pro­pri­etary friendly licens­ing and aux­il­iary perks includ­ing, but not lim­ited to, inte­gra­tion with devel­op­ment environments.

Let’s now talk licenses. The duetto com­piler itself is derived from LLVM and clang, both released under the Uni­ver­sity of Illinois/NCSA Open Source License. We are releas­ing our duetto com­piler under the same license, both to make it eas­ier for the com­mu­nity to con­tribute with code, to con­tribute back with some of our code to LLVM and clang, and because it does not make much sense to use a dual licens­ing scheme on a compiler.

In addi­tion to the com­piler, there are a bunch of head­ers and libraries which are essen­tials to develop using duetto. All those will be released under a clas­sic dual licens­ing scheme: GPLv2 for every­one and a pro­pri­etary non-copyleft license for pay­ing customers.

To sum­ma­rize, here is how duetto licens­ing will work:

  • duetto core com­piler: Uni­ver­sity of Illinois/NCSA Open Source License (like the LLVM and clang projects)

  • duetto core libraries/headers: dual license GPLv2; pro­pri­etary non-copyleft license avail­able for a fee

  • duetto pre­mium fea­tures: pro­pri­etary and closed source, avail­able for a fee

We think this choice rep­re­sents a good bal­ance between being open and giv­ing back to the open source com­mu­nity, and build­ing a viable busi­ness model. We hope the open source com­mu­nity will appre­ci­ate our choice!

 Fol­low us on twit­ter @leaningtech and visit our web­site http://www.leaningtech.com to get updates on our upcom­ing release and for fur­ther information.

6 Comments

Bringing C++ to the Web: some background on Duetto

logo_duetto_quadrato_192

While I am a big-time fan of C++, I don’t go so far as to say it’s “the best pro­gram­ming lan­guage ever, period.” As an engi­neer, still, I really believe it’s an extremely effec­tive tool for proper pro­gram­ming. Fans and advo­cates of more dynamic pro­gram­ming lan­guages such as Python, Ruby and JavaScript typ­i­cally con­sider C++ a bor­ing, ver­bose lan­guage with a pedan­tic com­piler that never stops com­plain­ing about seem­ingly unim­por­tant details.

Well, if you ask me, that is the most rel­e­vant fea­ture of C++. I don’t see it as a lim­i­ta­tion, but as a frame­work that helps struc­tur­ing my ideas into machine com­pat­i­ble form. Over time I have grown to appre­ci­ate that the C++ com­piler is a programmer’s best friend.

More recently I’ve also become fas­ci­nated with the incred­i­ble progress that browsers ven­dors have made in bring­ing standard-compliant mod­ern capa­bil­i­ties to the gen­eral user. While HTML5 can­vas and WebGL are def­i­nitely the most vis­i­ble addi­tions, we should not for­get about local stor­age, pro­gram­matic audio sup­port, video sup­port, web sock­ets and every­thing that is being stan­dard­ized. This exten­sive fea­ture set is amaz­ing and, to me, this depicts a future where almost-native appli­ca­tions and games are avail­able on every sin­gle plat­form through browsers.

So far, tak­ing advan­tage of the great plat­form that the Web is, has required pro­gram­ming in JavaScript. JavaScript is ter­ri­ble. I am no JS ninja, and I find it incred­i­bly frus­trat­ing hav­ing no hint about what kind of thing will be passed as an argu­ment of a func­tion, or if any­thing at all will be passed, for that mat­ter. How some peo­ple can build and effec­tively main­tain a large-scale code base in JS is beyond my com­pre­hen­sion. I am sure many devel­op­ers feel that same way that I do.

So we have some pretty awe­some Web APIs, tightly cou­pled in a pro­gram­ming envi­ron­ment that, to me, looks like a joke. Since that sounds like a prob­lem to me, and I like to solve prob­lems [1], I decided to bring my lan­guage of choice, C++, to the Web platform.

My solu­tion was to write duetto, a C++ com­piler for the Web. With a cou­ple of friends, we are try­ing to build a com­pany around it.

duetto is a C++ com­piler for the Web, not for JavaScript. Most of the work involved in writ­ing duetto was related to find­ing a way to gen­er­ate good JavaScript from C++. To do that, we wrote a spe­cial LLVM back­end, based on a cou­ple of (hope­fully) clever tricks. But we did that only because we had no choice. JavaScript is cur­rently the only prac­ti­cal way to deploy code to browsers. But in our vision JS is only a mean to our goal of enabling C++ as a pro­gram­ming lan­guage for web apps and games.

What we want to do is to pro­vide a bet­ter pro­gram­ming lan­guage for the Web, to take the most advan­tage of all the fan­tas­tic under­ly­ing tech­nolo­gies such as HTML5 and CSS, which do their job more than well. With duetto, design­ers can still work using tools they know, while devel­op­ers can write a sound appli­ca­tion logic in robust C++ code. And, by the way, we are not try­ing to pro­vide an half-backed wid­get library that would always be lag­ging behind what browser APIs can pro­vide. With duetto you access the browser directly, with no need of any mid­dle layer.

One of the intended uses of duetto is to port exist­ing C++ appli­ca­tions, espe­cially games, to the Web. But we also want to make it a pri­mary choice to write new web apps. One of the require­ments of mod­ern apps is con­tin­u­ous com­mu­ni­ca­tion with remote servers, for exam­ple to receive other users’ updates. This is why we have also intro­duced an exper­i­men­tal sup­port for trans­par­ent RPC to server side code.

Call­ing this RPC is actu­ally kind of lim­it­ing. Our objec­tive is to pro­vide a seam­less expe­ri­ence to make it pos­si­ble to write client and server side code in the same code­base and let the com­piler gen­er­ate the two sides of com­piled code. Take a look at some exam­ple code.

We are all stand­ing on the shoul­der of giants. In our case the giant is the LLVM/clang project. Gen­er­at­ing JavaScript required some improve­ments to the com­piler core that we hope to include in the upstream projects. LLVM pro­vide a large array of opti­miza­tions passes on code gen­er­ated  by clang, which means that JavaScript code reach­ing the browser has been already heav­ily opti­mized, low­er­ing the bur­den on the JS engine. In gen­eral, the JS gen­er­ated by duetto tries to play well with mod­ern JS engines, by pro­vid­ing hints that should make it pos­si­ble to gen­er­ate good native code. Cur­rently the code is generic, but we plan to explore the pos­si­bil­ity of gen­er­at­ing code tai­lored for each JS engine (e.g. Chrome’s V8 or Mozilla’s Spi­der­Mon­key). In the end this would be not dif­fer­ent from the CPU spe­cific opti­miza­tions that are avail­able on reg­u­lar architectures.

The release date for duetto is now get­ting really close and we are really excited about ship­ping it and see what peo­ple can do with this tech­nol­ogy. If you want to take a pre­view please visit http://leaningtech.com, there are still a few slots open in our extended beta program.

[1] Maybe I like solv­ing prob­lems too much, I wrote Lightspark because Adobe’s Flash Player was too slow in ren­der­ing full screen videos of kit­tens on my workstation

1 Comment

Bringing C++ to the Web: some background on Duetto

logo_duetto_quadrato_192

While I am a big-time fan of C++, I don’t go so far as to say it’s “the best pro­gram­ming lan­guage ever, period.” As an engi­neer, still, I really believe it’s an extremely effec­tive tool for proper pro­gram­ming. Fans and advo­cates of more dynamic pro­gram­ming lan­guages such as Python, Ruby and JavaScript typ­i­cally con­sider C++ a bor­ing, ver­bose lan­guage with a pedan­tic com­piler that never stops com­plain­ing about seem­ingly unim­por­tant details.

Well, if you ask me, that is the most rel­e­vant fea­ture of C++. I don’t see it as a lim­i­ta­tion, but as a frame­work that helps struc­tur­ing my ideas into machine com­pat­i­ble form. Over time I have grown to appre­ci­ate that the C++ com­piler is a programmer’s best friend.

More recently I’ve also become fas­ci­nated with the incred­i­ble progress that browsers ven­dors have made in bring­ing standard-compliant mod­ern capa­bil­i­ties to the gen­eral user. While HTML5 can­vas and WebGL are def­i­nitely the most vis­i­ble addi­tions, we should not for­get about local stor­age, pro­gram­matic audio sup­port, video sup­port, web sock­ets and every­thing that is being stan­dard­ized. This exten­sive fea­ture set is amaz­ing and, to me, this depicts a future where almost-native appli­ca­tions and games are avail­able on every sin­gle plat­form through browsers.

So far, tak­ing advan­tage of the great plat­form that the Web is, has required pro­gram­ming in JavaScript. JavaScript is ter­ri­ble. I am no JS ninja, and I find it incred­i­bly frus­trat­ing hav­ing no hint about what kind of thing will be passed as an argu­ment of a func­tion, or if any­thing at all will be passed, for that mat­ter. How some peo­ple can build and effec­tively main­tain a large-scale code base in JS is beyond my com­pre­hen­sion. I am sure many devel­op­ers feel that same way that I do.

So we have some pretty awe­some Web APIs, tightly cou­pled in a pro­gram­ming envi­ron­ment that, to me, looks like a joke. Since that sounds like a prob­lem to me, and I like to solve prob­lems [1], I decided to bring my lan­guage of choice, C++, to the Web platform.

My solu­tion was to write duetto, a C++ com­piler for the Web. With a cou­ple of friends, we are try­ing to build a com­pany around it.

duetto is a C++ com­piler for the Web, not for JavaScript. Most of the work involved in writ­ing duetto was related to find­ing a way to gen­er­ate good JavaScript from C++. To do that, we wrote a spe­cial LLVM back­end, based on a cou­ple of (hope­fully) clever tricks. But we did that only because we had no choice. JavaScript is cur­rently the only prac­ti­cal way to deploy code to browsers. But in our vision JS is only a mean to our goal of enabling C++ as a pro­gram­ming lan­guage for web apps and games.

What we want to do is to pro­vide a bet­ter pro­gram­ming lan­guage for the Web, to take the most advan­tage of all the fan­tas­tic under­ly­ing tech­nolo­gies such as HTML5 and CSS, which do their job more than well. With duetto, design­ers can still work using tools they know, while devel­op­ers can write a sound appli­ca­tion logic in robust C++ code. And, by the way, we are not try­ing to pro­vide an half-backed wid­get library that would always be lag­ging behind what browser APIs can pro­vide. With duetto you access the browser directly, with no need of any mid­dle layer.

One of the intended uses of duetto is to port exist­ing C++ appli­ca­tions, espe­cially games, to the Web. But we also want to make it a pri­mary choice to write new web apps. One of the require­ments of mod­ern apps is con­tin­u­ous com­mu­ni­ca­tion with remote servers, for exam­ple to receive other users’ updates. This is why we have also intro­duced an exper­i­men­tal sup­port for trans­par­ent RPC to server side code.

Call­ing this RPC is actu­ally kind of lim­it­ing. Our objec­tive is to pro­vide a seam­less expe­ri­ence to make it pos­si­ble to write client and server side code in the same code­base and let the com­piler gen­er­ate the two sides of com­piled code. Take a look at some exam­ple code.

We are all stand­ing on the shoul­der of giants. In our case the giant is the LLVM/clang project. Gen­er­at­ing JavaScript required some improve­ments to the com­piler core that we hope to include in the upstream projects. LLVM pro­vide a large array of opti­miza­tions passes on code gen­er­ated  by clang, which means that JavaScript code reach­ing the browser has been already heav­ily opti­mized, low­er­ing the bur­den on the JS engine. In gen­eral, the JS gen­er­ated by duetto tries to play well with mod­ern JS engines, by pro­vid­ing hints that should make it pos­si­ble to gen­er­ate good native code. Cur­rently the code is generic, but we plan to explore the pos­si­bil­ity of gen­er­at­ing code tai­lored for each JS engine (e.g. Chrome’s V8 or Mozilla’s Spi­der­Mon­key). In the end this would be not dif­fer­ent from the CPU spe­cific opti­miza­tions that are avail­able on reg­u­lar architectures.

The release date for duetto is now get­ting really close and we are really excited about ship­ping it and see what peo­ple can do with this tech­nol­ogy. If you want to take a pre­view please visit http://leaningtech.com, there are still a few slots open in our extended beta program.

[1] Maybe I like solv­ing prob­lems too much, I wrote Lightspark because Adobe’s Flash Player was too slow in ren­der­ing full screen videos of kit­tens on my workstation

1 Comment

Update: Duetto (C++ for the Web) limited public beta extended!

nontetris

Well folks, we are very happy about the suc­cess of our lim­ited beta cam­paign hav­ing already filled up the 100 slots we have offered for our first pub­lic beta. We decided to raise the thresh­old to up to 200 beta testers. Apply here:

http://www.leaningtech.com

and you will receive a link to our most recent build.

More­over,  take a look at the incred­i­bly awe­some demo that our friend Daniele Di Proi­etto made for us using an ear­lier beta. It is an imple­men­ta­tion of the “Not Tetris” con­cept. And just to be clear, it’s fully imple­mented in C++ using direct access to WebGL. For more info, see the demo page.

For more info take a look at our orig­i­nal blog post here.

No Comments

Update: Duetto (C++ for the Web) limited public beta extended!

nontetris

Well folks, we are very happy about the suc­cess of our lim­ited beta cam­paign hav­ing already filled up the 100 slots we have offered for our first pub­lic beta. We decided to raise the thresh­old to up to 200 beta testers. Apply here:

http://www.leaningtech.com

and you will receive a link to our most recent build.

More­over,  take a look at the incred­i­bly awe­some demo that our friend Daniele Di Proi­etto made for us using an ear­lier beta. It is an imple­men­ta­tion of the “Not Tetris” con­cept. And just to be clear, it’s fully imple­mented in C++ using direct access to WebGL. For more info, see the demo page.

For more info take a look at our orig­i­nal blog post here.

No Comments

Duetto (C++ for the Web) available for download: limited public beta

logo_duetto_quadrato_192Did we ever tell you that writ­ing a full-feature com­piler is not a job for the faint of heart? Dur­ing the last cou­ple of months we have been march­ing for­ward in our quest to bring a great, seam­less C++ pro­gram­ming expe­ri­ence for the Web. And we see vic­tory at the end of our journey!

Duetto is our clang-derived C++ com­piler which makes it pos­si­ble to really trans­late the value of C++ to Web pro­gram­ming. What we want is for you to be able to reuse your oh-so-hard-to-reimplement C++ code (like sim­u­la­tion libraries, or physics engines) in your shiny new HTML5-based app or videogame, with no need of rewrit­ing it in JavaScript. But not only.

We are aware, of course, that there are already other solu­tions, such as Emscripten, to solve this prob­lem. What makes Duetto dif­fer­ent is that it is a C++ com­piler with a C++ mindset.

We believe that the strength of C++ comes from enhanc­ing the plat­form capa­bil­i­ties, with­out try­ing to hide the lim­i­ta­tions from the devel­op­ers. In Duetto, JavaScript is our machine archi­tec­ture and an HTML5 browser is our OS. Our tool com­piles stan­dard, com­pli­ant C++11 code to JavaScript and exposes all the awe­some HTML5 fea­tures of mod­ern browsers, includ­ing WebGL. There is no mid­dle layer, no inef­fi­cien­cies, no cus­tom half-crippled wid­get library. You write you web page in HTML and CSS, and code the logic with C++. We truly believe this is tak­ing best of both worlds.

We have worked long and hard to pol­ish Duetto and we are now almost sat­is­fied by its capa­bil­i­ties and robust­ness. We are now ready to share this tool with the first 100 devel­op­ers that are going to share their inter­est, in order to col­lect the most feed­back and pro­vide the best pos­si­ble sup­port and experience.

Inter­ested in try­ing out Duetto for free? Visit http://leaningtech.com to get your copy.

If you’re not one of the 100 lucky beta testers, do not despair. We will be releas­ing Duetto in roughly a month. Just enough time to ham­mer out some bugs, add some more awe­some­ness and fig­ure out last details on our licens­ing model. Duetto will be released under a dual licens­ing scheme, so it will be an open source/free soft­ware project, avail­able for any­one. We will also be offer­ing paid com­mer­cial licenses for peo­ple which are not com­fort­able with free soft­ware libraries and/or want enterprise-grade support.

UPDATE: I for­got to link the incred­i­bly awe­some demo by Daniele Di Proi­etto. He used Duetto to port his own imple­men­ta­tion of the “Not tetris” con­cept to the Web.

13 Comments

Duetto (C++ for the Web) available for download: limited public beta

logo_duetto_quadrato_192Did we ever tell you that writ­ing a full-feature com­piler is not a job for the faint of heart? Dur­ing the last cou­ple of months we have been march­ing for­ward in our quest to bring a great, seam­less C++ pro­gram­ming expe­ri­ence for the Web. And we see vic­tory at the end of our journey!

Duetto is our clang-derived C++ com­piler which makes it pos­si­ble to really trans­late the value of C++ to Web pro­gram­ming. What we want is for you to be able to reuse your oh-so-hard-to-reimplement C++ code (like sim­u­la­tion libraries, or physics engines) in your shiny new HTML5-based app or videogame, with no need of rewrit­ing it in JavaScript. But not only.

We are aware, of course, that there are already other solu­tions, such as Emscripten, to solve this prob­lem. What makes Duetto dif­fer­ent is that it is a C++ com­piler with a C++ mindset.

We believe that the strength of C++ comes from enhanc­ing the plat­form capa­bil­i­ties, with­out try­ing to hide the lim­i­ta­tions from the devel­op­ers. In Duetto, JavaScript is our machine archi­tec­ture and an HTML5 browser is our OS. Our tool com­piles stan­dard, com­pli­ant C++11 code to JavaScript and exposes all the awe­some HTML5 fea­tures of mod­ern browsers, includ­ing WebGL. There is no mid­dle layer, no inef­fi­cien­cies, no cus­tom half-crippled wid­get library. You write you web page in HTML and CSS, and code the logic with C++. We truly believe this is tak­ing best of both worlds.

We have worked long and hard to pol­ish Duetto and we are now almost sat­is­fied by its capa­bil­i­ties and robust­ness. We are now ready to share this tool with the first 100 devel­op­ers that are going to share their inter­est, in order to col­lect the most feed­back and pro­vide the best pos­si­ble sup­port and experience.

Inter­ested in try­ing out Duetto for free? Visit http://leaningtech.com to get your copy.

If you’re not one of the 100 lucky beta testers, do not despair. We will be releas­ing Duetto in roughly a month. Just enough time to ham­mer out some bugs, add some more awe­some­ness and fig­ure out last details on our licens­ing model. Duetto will be released under a dual licens­ing scheme, so it will be an open source/free soft­ware project, avail­able for any­one. We will also be offer­ing paid com­mer­cial licenses for peo­ple which are not com­fort­able with free soft­ware libraries and/or want enterprise-grade support.

UPDATE: I for­got to link the incred­i­bly awe­some demo by Daniele Di Proi­etto. He used Duetto to port his own imple­men­ta­tion of the “Not tetris” con­cept to the Web.

13 Comments