Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Global functions #43

Closed
mockey opened this issue Aug 18, 2016 · 5 comments
Closed

Global functions #43

mockey opened this issue Aug 18, 2016 · 5 comments

Comments

@mockey
Copy link

mockey commented Aug 18, 2016

As for global functions my thought is it's better to place them all in a single extern class like Global so that users with PHP background always know where to search for API of such function.

I'd prefer to have them separated, because they are just too numerous. I thought the way it is done in the reference could be adopted somehow:
http://php.net/manual/en/funcref.php
But I don't mind really. I can always add some aliases for me :-)
Do you want to keep the original PHP names then, like array_filter?

@RealyUniqueName
Copy link
Owner

I'd like to keep native platform things identical to what they are and how they implemented on that platform :)
So yes, i'd like to preserve their names and arguments the same as in PHP.

@mockey
Copy link
Author

mockey commented Aug 18, 2016

i'd like to preserve their names and arguments the same as in PHP.

OK, I'll add the array functions I have so far to Global then.

@mockey
Copy link
Author

mockey commented Aug 18, 2016

Global.hx has spaces instead of tabs. Intentional?

@RealyUniqueName
Copy link
Owner

Mistake. I've pushed version with tabs instead.

@RealyUniqueName
Copy link
Owner

After a while it looks like having all native global function in one extern class is pretty convenient.

RealyUniqueName pushed a commit that referenced this issue Jun 27, 2017
* add eval target (new interpreter)

* install findlib packages

* typo

* don't add trailing slashes if your name is remove_trailing_slash

* add rope and ptmap to merlin again

* fix timers

* support enum to expr conversion (#43)

* fix no-arg enum values (#44)

* make Md5 faster on `eval` (#45)

* implement Md5 natively

* add -D interp-times

* fix incr ops

* lose IO dependency

* ignore Japan (?)

* 64 bits

* implement FPHelper natively for more accuracy

* allow floats in place of int because apparently that happens sometimes

* print value kind in case of unexpected value

* make other interp's create functions compatible

* add more hxmls for mandelbrot benchmark

* optimize enum index access

* optimize enum construction

* return empty array for Reflect.fields(null) (#46)

* sort timers by time

* print parent % too

* add eval.vm.Gc

* deal with different OCaml versions

* optimize decrement ops

* avoid raising Return exceptions at the end of a function's control flow

* don't catch RunTimeException in two places

* Improve macro context api: add haxe.macro.Context.storeExpr (#47)

* optimize `while (a >= const)`

* use DynArray instead of Stack for environment stacks

* avoid Return exception wrapping if there's no nonfinal return

* don't record stack traces in non-debug mode, unless -D interp-stack

* throw "Unbound variable" instead of asserting

* keep a default environment and re-use it if possible

* specialize any calls

* fix closure jitting

* memoize proto functions on call

* avoid hitting the write barrier on envs so much

* show context of local functions for times (#48)

* avoid more write barrier by storing 3 ints instead of 1 pos

* make envs a bit smaller

* make constructor calls a bit less slow

* move env info creating to a function

* allow adding useless breakpoints because why not

* keep variable names around so we can print them

* move JitContext to its own file

* implement some parts of the hxcpp-debugger CLI

* detect uncaught exceptions when debugging

* make caught-type detection more accurate

* catch Not_found if a breakpoint file doesn't exist

* don't mess up blocks if we're debugging

* support captured variables

* use intermediate functions instead of print_endline so they can be modified

* restructure a bit

* rework debug representation to support up/down/frame

* adjust to vshaxe-debug requirements

* always print prompt

* match hxcpp-debugger output more accurately

* minor

* hook up names

* keep variable types around

* fix var info lookup

* fix breakpoint pattern parsing

* fixes

* support `print obj.field`

* automatically reset to real env instead of complaining about it

* print values in a way the debugger accepts it

* lose var type information

* more hxcpp-debugger sync

* quote string values

* unify set/print

* resolve idents to prototypes

* support more identifier resolution

* return real paths

* support column breakpoints

* readjust to picky debugger

* support socket connections via -D interp-debugger-socket=host:port

* actuall call recv

* asdfg

* output some json

* consistency

* send data length

* add value_to_json

* output breakpoint setting result as int

* sync breakpoint names

* thread debug experiment

* don't ctx.eval() so much

* keep main thread separate

* fix some threading

* remove Thread implementation, at lest for now

* branching is faster

* avoid unnecessary function call

* use macro call position if that's all we have

* rename interp- stuff to eval- stuff

* add test (closes HaxeFoundation#5155)

* add tests (closes HaxeFoundation#5160) (closes HaxeFoundation#6145)

* maybe fix timer accumulation

* fix call stack handling if record_stack is false

* small opt

* optimize null checks

* improve int equality check

* fix flag implications

* close env timers in case of exceptions

* remove check because bools don't trigger the write barrier

* guard against failing C#/php test

* fix timers, again

* make StringMap implementation faster

* emit breakpoint_stop event

* output some info about the exception

* command for getting scopes and vars within scope

* some hackery

* revert stack (so the frame with id=0 comes first), output response to move_frame commands

* don't skip, but mark artifical frames

* make "frame" accept ids returned by "w"

* can now use zero-based scope numbers

* wip on scope variable output

* add 'structured' flag for the var output

* wip

* flat var repr

* show object internals

* display arrays the same way as objects

* some value display improvements

* have instance_fields fields, next to object_fields

* more wip on var introspection

* support array access in expr_to_value

* improve enum printing, fix array printing order

* support enum value introspection

* output "access" field so we don't have to do the magic on the adapter side to know how to access subvars

* wip on setting vars

* use native crc32 implementation for Crc32.make

* skip empty scopes in "scopes" request

* swap argument order for jit_expr

* optimize method calls a little

* optimize calls to singly-implemented interface fields

* some minor cleanup

* don't make pointless vnull assignments when declaring variables without init

* use some `[@@inline]` to restructure call code

* don't mess up override calls

* check if 4.02.3 accepts this

* Revert "check if 4.02.3 accepts this"

This reverts commit e20311c.

* add position info to scope

* rename vars_scope to simply vars, rename vars_inner to structure

* remove `[@@inline]` for now

* ctrl s

* make fastCodeAt a bit faster

* don't use the default env if we want to record a stack

* Bring back VArray and VString (#49)

* bring back VString

* bring back VArray too

* change stack trace output

* reset ctx.curapi after call_path

* implement Haxe serialization algorithm and use it for Context.signature

* use full enum path (see HaxeFoundation#6273)

* set error state on eval context

* start separating connection from EvalDebug, since we want two different connection interfaces

* add EvalDebugSocket module which is the main goal to complete right now

* select connection based on whether there's a socket (do it the ugly way for now)

* rework EvalDebugSocket to a json-rpc protocol

* camelcase

* don't care about `id` structure, just return it as is

* conform to jsonrpc spec better by always supplying `id` for errors (should be null if there's no id)

* minor

* clean up EvalDebugCLI from the json socket stuff

* remove unused value_string

* add a method to replace all breakpoints within file

* make sure we actually compare the same enums (closes HaxeFoundation#6273)

* remove "created socket" print

* add eval.vm.Context.breakHere

* play it safe with compare/equals

* don't comment out what you want to test

* optimize int/enum switches

* get exception message _before_ resetting the context

* reset caught_types within catch blocks

* catch exception on recv

* re-work function argument handling

* add rev_file_hash

* [debug] don't stop at field access expressions

* let prototypes keep a reference to their own value

* rely on physical equality for equals

* [eval] initial vector implementation (#51)

* [eval] initial vector implementation

* [eval] add missing Vector key

* optimize Vector.get/set

* use native Vector.map

* optimize new Vector a bit

* improve Vector/Array.map

* [eval] vector should use ocaml implementations

* implement Vector.join natively and improve Array.join

* [eval] add special cases in jit to improve vector performance, add array access to eval.Vector to detect them, bugfixing

* fix Vector warnings

* remove unused eval.Vector.get/set

* compare prototypes by path (see HaxeFoundation#6308)

* check for uncaught haxe.macro.Error exceptions (closes #53)

* fix env_captures initialization

* always initialize vars

because nadako doesn't

* Revert "fix env_captures initialization"

This reverts commit cfc4fe2.

* [eval] add missing VVector handling in various places (#52)

* [eval] add missing VVector handling in various places

* [eval] handle vector.length like array.length, but don't support write access

* [eval] don't expose set and get of eval.Vector, we only handle array access

* add eval.vm.Context.loadPlugin

* expose decode_expr again

* expose encode_expr as well so we can do macros \o/

* expose encode_ctype

* add decode_type

* More work on cppiaast

* [lua] get rid of unused variable (and warning)

* Add cppiaast define to test unified cppia generation

* deal with `if (throw)` situations (closes HaxeFoundation#6315)

* Normalize class names in cppia-ast

* save locals in typing_timer

* subdate upmodule

* add back dynlink

* fix Uncompress
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants