
Compiling PHP's Eval() to .NET - pchp
https://www.peachpie.io/2020/02/evil-eval-2.html
======
awild
We do something very similar at work, but with runtime generated Java code for
an in-memory column oriented database. Our data is analyzed before being
loaded and we determine the range of numbers necessary to store the data: eg.
If we only have bytes incoming, we generate a class that only stores bytes
etc. On top of that all our strings are interned in a trie and then
represented as ints, also run through above outlined code.

This works because we are mostly interested in equality of strings and other
computation with strings (mostly prefix based classific) is done ahead of
time.

For debugging we emit our generated code and both eclipse and intellij picked
up our generated code without configuration. It's safed us a lot of headaches.

------
whoisthemachine
As someone who began programming with PHP, and who programs professionally in
C# now, PeachPIE has always been a fascinating project to me.

Glad to see Roslyn has made PeachPIE even more capable.

------
rajeev-k
I needed the ability to _safely_ execute formulas in my .NET app. My solution
was to write a parser and interpreter. Here it is:
[https://github.com/Rajeev-K/formula-
parser](https://github.com/Rajeev-K/formula-parser)

~~~
smt88
You can do this already with DataTables, which is basically an in-memory Excel
spreadsheet. Bonus is that it also supports Excel functions, and it’s
completely safe/sandboxed code.

~~~
ftcHn
e.g. [https://docs.microsoft.com/en-
us/dotnet/api/system.data.data...](https://docs.microsoft.com/en-
us/dotnet/api/system.data.datacolumn.expression?view=netframework-4.8)

------
ghusbands
> we simply want to emit the debug information of eval() only if we are just
> debugging the program. Otherwise it’s just an unnecessary performance
> overhead.

This will not correctly handle the case when the user attaches a debugger
after the eval has started, but before all execution artifacts (including
callbacks/closures) are finished.

