[fonc] DSL Engineering: Designing, Implementing and Using Domain-Specific Languages

2013-01-25 Thread Kurt Stephens
Don't know if this has been posted/discussed before:

http://dslbook.org/

The 560-page, book is donationware.  Lots to read here.  :)

-- KAS
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] DSL Engineering: Designing, Implementing and Using Domain-Specific Languages

2013-01-25 Thread BGB

On 1/25/2013 10:11 AM, Kurt Stephens wrote:

Don't know if this has been posted/discussed before:

http://dslbook.org/

The 560-page, book is donationware.  Lots to read here.  :)


nifty, may have to go read it...


it does make me wonder:
how viable is donationware as an option for software, vs, say, the 
shareware model?


(I wonder this partly as my 3D engine is sort-of donationware at 
present, but I had considered potentially migrating to a shareware model 
eventually...).


note: this doesn't apply to my scripting stuff, which is intended to be 
open-source (currently uses MIT license), but is presently bundled with 
the 3D engine, but could be made available separately (as some people 
have expressed concern over downloading proprietary code to get the free 
code, but admittedly I am not entirely sure what the issue is here, but 
either way).



also left wondering if anyone has a good idea for a good way to 
determine when things like bounds-checks and null-checks can safely be 
omitted? (say, with array and pointer operations).


I guess probably a way of statically determining that both the array 
exists and the index will always be within array bounds, but am not 
entirely sure exactly what this check would itself look like (like if 
there is a good heuristic approximation, ...).


type-checking is a little easier, at least as far as one can determine 
when/where things have known types and propagate them forwards, which 
can be used in combination with explicitly declared types, ... however, 
the size of the array or value-range of an integer is not part of the 
type and may not always be immediately obvious to a compiler.


then again, looking online, this may be a non-trivial issue (but does 
add several checks and conditional-jumps operations into each array access).



well, at least luckily the security checks has a good solution:
if the code belongs to the VM root, most security checks can be omitted.
the only one that can't really be safely omitted relates to method calls 
(we don't want root calling blindly into insecure code).


often this check can be done as a static check (by checking the source 
and destination rights when generating a call-info structure or 
similar, which will be flushed whenever new code is loaded or the VM 
otherwise suspects that a significant scope-change has occurred).


actually, static-call caching is itself a heuristic:
it assumes that if the site being called is a known function or static 
method declaration, then the call is static;
if the site being called is a generic variable or similar, a dynamic 
call is used (which will use lookups, type-checks, ... to go about 
making the call).


most of this is largely transparent to high-level code, and mostly is 
figured out in the bytecode - threaded-code stage, and most of this 
information may be reused by the JIT.



or such...

___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc