News for hackers. Stuff that matters.
Re:Compiling Dynamic Languages (2013) [pdf] by rtjalkbo on Sunday April 14, 2019 @05:07AM (#19658300)
Co-author of the thesis here - if anybody is interested in the source code, let me know.

Keep in mind that JS has changed quite a bit in the years that have passed and that certain aspects ('eval' in particular) was excluded from the project.

Though, it may be an interesting starting point for anybody, who wants to play around with compiling JS.

Re:Compiling Dynamic Languages (2013) [pdf] by chrisseaton on Sunday April 14, 2019 @08:31AM (#19659011)
> certain aspects ('eval' in particular) was excluded from the project

If you’re interested in what it takes to compile dynamic languages, why did you leave out such a notable dynamic language feature?

Re:Compiling Dynamic Languages (2013) [pdf] by avidmoon on Sunday April 14, 2019 @08:55AM (#19659138)
Because it is not really possible to "compile" an eval expression in the general case.

By definition, in a compiler, translation from symbols to code happens on the beforehand. But eval needs to do this at runtime. This means that to compile a program a la "eval(input_string)" the output program whould need to contain the entire compiler, which gets used to convert the eval_input before running.

So in practice you strapped a kind of interpreter to the output program. This is often inefficient and hackish, and thus it is more desirable to just not have a eval feature.

Re:Compiling Dynamic Languages (2013) [pdf] by chrisseaton on Sunday April 14, 2019 @09:23AM (#19659269)
Yeah I get it's problematic.

But if you're going to start cutting out the dynamic features, and those you don't think aren't desirable, then why are you challenging yourself to write a compiler language for a dynamic language in the first place? You could cut out all these troublesome features if you just picked a static language.

Re:Compiling Dynamic Languages (2013) [pdf] by coldtea on Sunday April 14, 2019 @10:41AM (#19659659)
Because you don't need eval to do hugely interesting things in dynamic languages.

Heck, you don't even particularly need reflection, but eval even less so.

Re:Compiling Dynamic Languages (2013) [pdf] by lispm on Sunday April 14, 2019 @09:29AM (#19659301)
One of the reasons is that a class of deployed programs might not need EVAL at all or that it is also not allowed to have EVAL for some reasons.
Re:Compiling Dynamic Languages (2013) [pdf] by justbaker on Monday April 15, 2019 @02:37PM (#19667669)
I don't think using eval is the main problem he's trying to solve. Eval isn't really a good example of "dynamic programming done right". You don't even need eval to metaprogram in JS.
Re:Compiling Dynamic Languages (2013) [pdf] by coldtea on Sunday April 14, 2019 @10:39AM (#19659651)
Because most of the use of dynamic languages doesn't involve eval -- and when it does it's usually considered an anti-pattern.

I doubt you'd find much use of eval in the top 100 most popular Python projects for example.

So it's not exactly that defining a feature.