Commit graph

58 commits

Author SHA1 Message Date
Daniel
61890b15cb
module refactor (#148)
* wip

* move print and JSON functions to modules

* builtin functions are not replacable now

* builtin functions are added for default nil symbol table

* importables: builtin modules and source modules

* refactoring runtime tests

* fix tests

* update documentation

* cleanup

* clean up cli

* fix REPL prints
2019-03-18 08:15:26 -07:00
earncef
ebddfd13a7 Added println (#144)
* Added println

* Fixed tests.

* Updated doc

* Fixed doc

* Cleanup

* Added size limit

* Fixed incorrect type

* Cleanup

* Consistent output for print and println
2019-03-16 00:14:22 -07:00
earncef
5d8457a8f6 Removed double indirection for massive performance gains (#140)
* Removed double indirection for performance gains

* Added missing file

* Cleanup

* Remove pointers patch.

* Cleanup

* Removed redundant parenthesis

* FreeVar changed to ObjectPtr and removed OpSetLocalPtr

* Removed truePtr, falsePtr and undefinedPtr

* Cleanup
2019-03-14 01:07:19 -07:00
Daniel
1921d907a6
fix scipt.Variable.Value() bug (#139) 2019-03-13 03:07:06 -07:00
Daniel
8707fd6e7f
fix to_json builtin function bug (#138) 2019-03-13 02:25:21 -07:00
Daniel
e93f6f6325
limit max object allocations (#129)
- add object.NumObjects()
- add object allocation limit in VM
- delete objects.Break, objects.Continue, objects.ReturnValue
- add Script.SetMaxAllocs()
- update sandbox documentation
- add some tests
- remove duplicate values in compiled constants (fixes #96)
- option to limit the maximum number of objects in compiled bytecode constants
2019-03-06 17:20:05 -08:00
Daniel
53ce12998e
add module-import tests to most of runtime package (#125) 2019-03-01 15:55:29 -08:00
Daniel
0c5e80b057
Limit the maximum size of string/bytes values (#121)
* add tengo.MaxStringLen and tengo.MaxBytesLen to limit the maximum byte-length of string/bytes values

* add couple more tests
2019-03-01 10:48:02 -08:00
earncef
880ee04ffe script.Add accepts a CallableFunc value (#124)
* script.Add accepts a CallableFunc value

* moved to FromInterface
2019-03-01 09:28:41 -08:00
Daniel
306055ad65
add helper functions for builtin functions and builtin modules (#122)
* add helper functions for builtin functions and builtin modules

* fix a builtin function bug for modules
2019-02-28 18:41:29 -08:00
earncef
7cc683e867 SetBuiltinFunctions and SetBuiltinModules (#120)
* `SetBuiltinFunctions` and `SetBuiltinModules`

* nil implies no built in functions.

* Additional tests.

* Cleanup

* Updated SetBuiltinFunctions

* Docs updated.
2019-02-28 08:26:25 -08:00
Daniel
3500c686b3
Improvements on compiler/VM error reporting (filename:line:col)
- add type infos to VM error messages
- add 'Name' to UserFunction objects 
- add 'expectErrorString' to VM tests
- replace vm.expectError() with vm.expectErrorString() to make it more explicit
- add source map info to VM error messages
- optimization in function calls
- add file/line/col info to compiler errors
- change stdlib module to be loaded from VM (instead of compiler) so they can be properly loaded after the source is compiled into binary
- VM can take builtin modules optionally
2019-02-20 16:26:11 -08:00
Daniel
fc4e3586c4
Fix a closure-block scope bug (#99)
* fix issue #98

* remove objects.CompiledModule

* remove objects.CompiledModule
2019-02-11 17:34:02 -08:00
earncef
5e21abfd74 IndexGet of Array, Index, ImmutableIndex, Bytes, String, Undefined 2019-02-09 16:45:21 -08:00
Daniel Kang
90aafc8bb4 Add 'is_function' and 'is_callable' builtin functions 2019-02-03 15:50:40 -08:00
Daniel Kang
eda0495f30 Fix several module-related issues 2019-02-02 22:22:40 -08:00
Daniel Kang
c57a7f8f98 Fix a bug where len() builtin does not take immutable array 2019-02-01 17:32:05 -08:00
Daniel Kang
9e73f40485 1. Added documentation on operators. 2. Add (char)-(int) operators 2019-02-01 16:58:44 -08:00
Daniel Kang
a9a93801b7 add 'times' module 2019-01-29 17:39:25 -08:00
Daniel Kang
378bf510d3 add Time type; add is_array, is_immutable_array, is_map, is_immutable_map, is_time, time builtin function 2019-01-29 16:01:14 -08:00
Daniel Kang
85da0cdc24 force using TrueValue, FalseValue, UndefinedValue 2019-01-28 13:09:40 -08:00
Chyroc
d413d2ffe7 feat: add builtin function: type 2019-01-28 13:19:03 +08:00
Daniel Kang
85001be9b8 implement immutable array and map 2019-01-25 14:54:58 -08:00
Daniel Kang
37016f4e17 add 'printf' and 'sprintf' builtin functions 2019-01-24 16:38:04 -08:00
Daniel Kang
2486457fdf add Iterable interface 2019-01-23 13:36:03 -08:00
Daniel Kang
a562964007
Merge pull request #30 from d5/indexable
Indexable and IndexAssignable
2019-01-23 09:29:19 -08:00
Mike Bazuin
e94b3dab0f Added builtin function from_json
objects/builtin_json.go:
	- Added function builtinFromJSON

objects/builtins.go:
	- Added builtin function from_json

runtim/vm_builtin_test.go:
	- Added tests for builtin function from_json
2019-01-23 17:24:53 +01:00
Mike Bazuin
c4e6e61fb6 Added builtin function to_json
objects/builtin_json.go:
	- Added function builtinToJSON

objects/builtins.go:
	- Added builtin function to_json

runtime/vm_builtin_test.go
	- Added tests for builtin function to_json
2019-01-23 17:24:53 +01:00
Mike Bazuin
65f84ec2d1 Added conversion functions: objectToInterface
objects/conversion.go:
	- Added private helper function
2019-01-23 17:23:51 +01:00
Daniel Kang
1045afd5a4 add Indexable / IndexAssignable interface 2019-01-22 15:44:37 -08:00
Mike Bazuin
d8c83b6578 Moved interfaceToObject from scripts/conversion.go to objects/conversion.go as FromInterface 2019-01-22 21:09:52 +01:00
Daniel Kang
814851abe6 fix compile errors 2019-01-18 14:52:07 -08:00
Mike Bazuin
fae85000cf Convert returns second argument Object as it self in case of failure of conversion of first argument
objects/builtin_convert.go
- Changed type check of in case of args[0] failure to always return
  args[1] if set

runtime/vm_builtin_test.go:
- Changed tests according to changes in objects/builtin_convert.go
2019-01-18 23:29:04 +01:00
Mike Bazuin
a747c98fb5 Builtin converts now take default values
objects/builtin_convert.go: Added defaults to all builtin convert functions except
bool as this one returns false for undefined, instead of undefined.

runtime/vm_builtin_test.go: Added tests for checking default value
behaviour for builtin convert funcs
2019-01-18 22:21:42 +01:00
Daniel Kang
a8d838ad3e Compile can take custom stdlibs 2019-01-18 09:19:45 -08:00
Daniel Kang
9b1a0a36bf add more comments 2019-01-18 01:57:14 -08:00
Daniel Kang
8cad04841e add os File functions; add Bytes type 2019-01-18 01:43:46 -08:00
Daniel Kang
44c55ea296 add some more os module functions, add more built-int functions 2019-01-17 21:23:20 -08:00
Daniel Kang
552e9c01c5 separate objects conversion functions 2019-01-17 16:52:07 -08:00
Daniel Kang
cb5cbad3ad len builtin supports map and module map 2019-01-17 16:51:26 -08:00
Daniel Kang
d4757efc68 use 'strconv.Quote()` instead of string formatter 2019-01-17 16:51:00 -08:00
Daniel Kang
3f55a6b5b0
Modules (#5)
Implement module imports
2019-01-17 01:56:05 -08:00
Daniel Kang
8171d58071
Error Object (#4)
add error expression and error object
2019-01-16 12:23:20 -08:00
Daniel Kang
47da30bb5b some more tests in objects 2019-01-15 20:21:35 -08:00
Daniel Kang
40ad7aa1bb Fix undefined value compatibility 2019-01-15 17:21:58 -08:00
Daniel Kang
344c96d280 add objects tests 2019-01-15 10:35:51 -08:00
Daniel Kang
e1e0e0cb24 fix golint, ineffectassign issues and add some more tests 2019-01-15 10:14:16 -08:00
Daniel Kang
575d969956 split iterator files 2019-01-14 23:52:52 -08:00
Daniel Kang
b79fd4f7ef
Fix lint issues (#2)
* addressing golint issues

* fix all lint issues.
2019-01-14 22:24:33 -08:00
Daniel Kang
dab498651a add tests for Object.BinaryOp 2019-01-14 05:22:28 -08:00