DWScript news roundup for May 2013

Here are the main DWS news items for May 2012

dws-mirrorLanguage and Script Engine

  • Delphi XE4 is now supported, compiler hints for XE3 have been taken care of as well
  • compiler now supports “in” operator across strings, for for instance “if subString in myString then” is equivalent to “if myString.Contains(subString) then
  • added standard “helpers” for most built-in functions operating on String, Integer, Float and Boolean. These roughly follow the Delphi & .Net conventions, though standard Maths functions are accessible directly (f.i. you can do “angle.Cos” directly, rather than have to go through “Math.Cos(angle)“)
  • added some more string functions (DeleteLeft, DeleteRight, etc.)
  • added support for EmptyParam for the COM connector
  • added DivMod to the standard functions
  • improved performance of DecodeDate/Time functions
  • improvements and fixes for the JSON connector (now supports manipulating an existing JSON structure, creating, moving and deleting nodes)
  • misc. fixes and improvements

Note that there aren’t specifics DPKs for XE4, you can just copy/rename the XE2 or XE DPKs.

Changes for SmartMobileStudio / JavaScript Codegen

In addition to the  previous changes, the following will apply to the next version of SmartMS:

  • support “for str in variant” which allows enumerating members of a raw JavaScript object (compiles to “for (str in v)”)
  • improved code generation for functions with an “exit” statement
  • added specific optimizations for string copies and testing (startswidth/endwidth)
  • slightly faster code generation


5 thoughts on “DWScript news roundup for May 2013

  1. Nice work.

    I like very much your new TRefCountedObject and TInterfacedSelfObject classes, which uses the TMonitor (mostly unused) slot for a simple ARC model.
    Is it really worth it?

    I also noticed you introduced your TFixedCriticalSection into the code, during XE4 support. Is there any modification in XE4 about critical sections?

    What is the current status of the JIT? I know this is still work in progress, but it is a very cool feature. What is the test coverage of JIT. Are all tests passing with JIT enabled, now?

    The IDE seems to have nice enhancements. Perhaps worth an article, and some screenshots.

  2. @A. Bouchez The expression tree and symbols are mostly made up of lots of very small objects, so yes, the impact can be measurable, especially if you have lots of different scripts at the same time (as in a web server).

    The TFixedCriticalSection was already there, but for XE4 I moved it to a different unit, dropped the dependency to TCriticalSection and went for a straight API wrap. This was mostly done to simplify things with the ifdef’ing, as it would have involved different “uses” for XE4, and it’s a very simple API anyway.

    All the unit tests pass under the JIT, coverage is around 95%, however due to current JIT limitations, relatively few of the test involve the JIT extensively.

  3. Eric, I am impressed by HttpSys2WebServer connecting your DWScript with Synopse mORMot A. Bouchez.
    Could you update IndyWebServer too, because now it no longer compiles, with current state of libraries?
    Best Regards
    Michal Abramczyk

  4. @miab I have moved away from Indy to IOCP and mORMot, so I don’t have much use (or knowledge) of Indy right now, but if someone contributes a fix, I’ll update it asap.

Comments are closed.