DWScript 2.3 preview 1

A new DWScript 2.3 source archive is available (417 kB) for the SVN-averse, the previous available zip was the 2.2 version, which is quite outdated. Given the continuous extension of the unit tests suite, this should hopefully be one of the most stable versions to date, in addition to being the most advanced, but it’s likely less stable and less advanced than the SVN version will be when you’ll read these lines 😉

(more…)

“Live” IDE scripting for DWScript

DWS compiler and execution engine are reaching very nice maturity levels, meaning they can be used to compile & execute code interactively, for instance to edit a web page, which mixes HTML, CSS, server-side dynamic Object Pascal content generation and client-side Object-Pascal scripted content.

(more…)

“heredoc” multi-line strings

DWScript now supports multi-line strings, aka “heredoc”, using the same syntax as Prism/Oxygene, which involves double-quoting them, for instance:

s := "Lorem ipsum 'dolor' sit amet, consectetur adipiscing elit.
Duis l'ipsum odio, pretium ""hendrerit"" varius sed,
aliquet vitae elit.
Sed eu libero nec nisl ""malesuada"" dignissim.";

is equivalent to

s := 'Lorem ipsum ''dolor'' sit amet, consectetur adipiscing elit.'#13#10
    +'Duis l''ipsum odio, pretium "hendrerit" varius sed,'#13#10
    +'aliquet vitae elit.'#13#10
    +'Sed eu libero nec nisl "malesuada" dignissim.';

Which can be quite useful when you have multi-line string content, such as an SQL query, a long format string, a snippet of CSS/HTML/XML, etc.

Nate that if you’re using The SynEdit, the DWS highlighter has been updated and properly highlights those, you just need to get it from the SynEdit SVN.

It a slight cosmetic issue, shared AFAICT by other languages that implement “heredoc”, which is that if you don’t want to have spurious whitespace/tabs in the multi-line string, you basically have to break indentation.

Does any one knows a language which has a convenient “heredoc” syntax that would alleviate this issue?

DWScript JS Smart-linker (revised)

Not long ago, I wrote the DWScript JavaScript Smart-Linker did not eliminate unused virtual methods, well that limitation is now gone.

A virtual method that is never called, in its base class nor any of its subclasses, will now be eliminated.

In the small game Nickel Iron which was used as illustration, that further reduces the generated output by almost 10% to just 92 kB “raw”, or 23 kB compressed. The gains come from not just the unused implementations being removed, but also a reduction in the size of the various VMTs.

Small is Beautiful

Small JavaScript that is. Or how to go from 350 kB down to just… 25 kB 23 kB.

Smaller JavaScript can help in up to three ways:

  • faster download: faster application installation or startup.
  • faster parsing for the browser: faster startup.
  • smaller identifiers: faster execution for non-JITting JavaScript engines.

And smaller also means you can have far more complex applications for a given size budget.

(more…)