Phalanger
Phalanger copied to clipboard
a lot of bugfixes
is_file: ArgumentException if path contains invalid chars invalid encoding in urlencode/urldecode and dependenced functions some ScriptContext survived if web.config contains handlers or async code used (directly or indirectly) ReferenceNull is error instead of warning User error handler called when error reporting is disabled wrong print_r output of the PhpBytes type curl: support for CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST in .net 4.5 curl_setopt: bug with int values gd: imagecolorresolve, imagecolorsforindex implementation gd: transparent gif color changed to black when load and save image soap: many bugfixes and simple SoapServer implementation xml_parse_into_struct: wrong result and bug with encoding gzcompress NullReferenceException when data is null
is CallContext is really needed in ScriptContext or this is legacy code? All CallContext data copied in another thread when async code is called (even safe at first sight HttpWebRequest.ServicePoint property using async code)
P.S. my implementation of a mcrypt functions using bouncycastle. Can Phalanger project use this library without any licensing or any other problems?
CallContext is used because of native extensions in "remote" mode (so e.g., Phalanger would run 64bit, and PHP extensions 32bit). This is very old stuff, and will be removed. We are aware of that (since ScriptContext.CurrentContext can be 100-times faster if we remove CallContext). Anyway on current thread, there is no copying, still it is slow.
The other thing is, ScriptContext should be "Fork"ed to be used on another thread! Otherwise you are going to manipulate with non-thread safe structures asynchronously. (ScriptContext is not thread safe, and locks{} would slow down runtime rapidly)
bouncycastle is released under an adaptation of MIT X11 license, Phalanger is released under GPLv2. This combination should be checked. All the components released in Phalanger package (not used during compiling of Phalanger project) must be compatible with GPLv2.
i'm suggesting breaking change: change "debug" configuration parameter type to DebugMode (None, Pdb, Full)
Sorry this merge request is too big to be merged automatically. I can only subsequently reimplement some of your changes.