a60d994e25
Improve Performance of the Type System ( #824 )
...
* export the checker and ensure no methods or fields are exported
* make Checker reusable
* add PatchAndCheck method to Checker, and reuse it in visitors
* avoid unnecessary map and consolidate structs
* make all Nature methods use pointer-receiver
* added cache for type and nature information
* optimize type and nature checks
* more aggressively cache some partial results and add cheap checks
* cache reused values
* reduce copying in Nature by breaking down optional fields
* enforce use of cache
* improve ergonomics of FromType and NatureOf
* improve struct method fetching
* make cache private to Nature
* first iteration improving struct reflect caching
* cleaned up struct fields data
* improve caching of functions data
* simplify checker code
* simplify and remove dead code
* add checker benchmarks
* address PR comments and minor improvements
* rename from SetCache to Bind
* make the benchmarks more fair
* fix benchmark option not being applied
* move Cache to be argument instead of field
* merge FuncData into Optional
* rename Optional to TypeData
* simplify struct logic
* cache builtin numeric types
---------
Co-authored-by: Anton Medvedev <[email protected] >
2025-09-18 14:38:27 +02:00
Anton Medvedev and GitHub
037ef3dc3d
Add expr.MaxNodes() option ( #799 )
...
* Add expr.MaxNodes() option
* Fix error message
* Add more tests and comments
2025-06-03 17:31:46 +02:00
Anton Medvedev and GitHub
452d355706
Make expr.Eval faster ( #775 )
...
* Make expr.Eval faster
* Add bench_call_test.go
* Make parser config optional
2025-03-24 14:48:41 +01:00
Anton Medvedev
cd0943453d
Remove print
2025-03-09 23:39:16 +01:00
Anton Medvedev
82ec7571df
Correctly add OpDeref if needed
...
Fixes #739
2025-03-09 13:07:38 +01:00
Anton Medvedev and GitHub
c953d0dde1
Refactor types table ( #667 )
2024-06-04 00:08:01 +02:00
Anton Medvedev
0d07afb7ae
Add checker.ParseCheck func
2024-05-18 23:13:58 +02:00
Anton Medvedev
c6cd675d6b
Add default timezone option expr.Timezone()
2024-05-07 23:19:39 +02:00
Anton Medvedev
c3a9aa8f44
Fix naming
2024-02-18 09:55:10 +01:00
Anton Medvedev
b117e690fb
Fix operator overloading recursive
...
Fixes #548
2024-02-18 00:15:39 +01:00
Anton Medvedev
96c6ad6087
Refactor operator override to be purely patcher pkg
2024-02-17 19:56:28 +01:00
Anton Medvedev
8ab750f2a2
Move operator override patcher to correct pkg
2024-02-17 19:17:27 +01:00
Nikolay Matrosov and GitHub
0ebf2c2574
feat: Operator overload from Function ( #408 )
...
* feat: rewritten Operator overload from Function
* fix: add test
2024-02-17 14:33:07 +01:00
Anton Medvedev
616653130e
Make AsAny the new default
2024-01-21 11:55:30 +01:00
Anton Medvedev
1dca2cbdc2
Move ast.Function to builtin.Function
2023-12-29 21:04:25 +01:00
Anton Medvedev
bf37f8d7e2
Use errors.As
2023-12-26 23:11:40 +01:00
Anton Medvedev
551d2a7e0f
Use expr-lang/expr
2023-12-03 21:53:01 +01:00
Anton Medvedev
9d12d8fc39
Add expr.WithContext()
2023-11-27 21:52:44 +01:00
Anton Medvedev
32f5fde2eb
Replace interface{} with any
2023-08-30 11:25:15 +02:00
Anton Medvedev
9a9cab2e4a
Add sort builtin
2023-08-28 14:55:44 +02:00
Anton Medvedev
eb03bcb945
Remove ExperimentalPipe()
2023-08-24 15:26:36 +02:00
Anton Medvedev
4ae978d384
Allow to disable builtins
2023-08-19 22:24:42 +02:00
Anton Medvedev
bac96c2c29
Add expr.ExperimentalPipes() config
2023-08-15 15:39:59 +02:00
Anton Medvedev
f1fa30776c
Add AsAny()
2023-08-14 12:46:08 +02:00
Schneizel and GitHub
2b8c157625
remove duplicate codes ( #356 )
2023-04-18 14:09:01 +02:00
Anton Medvedev
72a4ce18e9
Add len() builtin
2023-01-29 20:34:15 +01:00
Anton Medvedev
4b7c89eff1
Add expr.Function feature
2023-01-29 20:34:15 +01:00
Vlad and GitHub
f4ad8e3fa0
Do operator check after env is set ( #309 )
2023-01-20 18:42:24 +01:00
Anton Medvedev
1b6fe02337
Add AsKind and AsInt func
2022-11-10 21:32:32 +01:00
Anton Medvedev
00d167a791
Move code duplicate to conf package
2022-11-10 21:21:38 +01:00
Anton Medvedev
5938325d90
Update docs
2022-10-27 23:08:54 +02:00
Anton Medvedev
0b523f347e
Sort imports
2022-10-22 13:39:04 +02:00
Anton Medvedev
c19d6d15fc
Refactor operator patcher
2022-10-22 13:30:57 +02:00
Anton Medvedev
c4a3d22ff1
More fixes
2022-10-13 18:59:12 +02:00
Anton Medvedev
1a7df6aa1e
Expose file.Error type for better error handling
2020-03-20 15:26:46 +03:00
Anton Medvedev
94400068f2
Add double type-check when a patch is present
2020-03-17 20:42:51 +03:00
Anton Medvedev
0b1b2e3f28
Add comment
2020-03-16 16:29:25 +03:00
Anton Medvedev
e5049dfda3
Make conf top-level package
2020-03-16 16:29:25 +03:00
Anton Medvedev
cd6348b6bf
Add expr.Patch func
2020-03-16 16:29:25 +03:00
Anton Medvedev and GitHub
acba548cab
Add ConstExpr
2020-03-10 08:36:12 +03:00
Anton Medvedev
0223fa9f0c
Make type checking non-strict by default
2020-03-06 14:26:58 +03:00
Anton Medvedev
aaf5d24ecb
Reimplement expr parser
2020-02-25 09:33:17 +03:00
TarasZak and Anton Medvedev
10b48c0915
Add compile checks for undefined variables ( #85 )
...
* Add compile checks for undefined variables
* Update expr_test.go
Co-authored-by: Anton Medvedev <[email protected] >
2020-01-24 14:53:53 +03:00
Anton Medvedev
8564cbf597
Add option to allow using undefined variables
2019-11-07 12:17:02 +03:00
Elliot and Anton Medvedev
b7f2bedd10
Move conf.Options out of internal package
2019-10-18 10:32:59 +03:00
Anton Medvedev
fa66cfd4d1
Add backward compatibility with v1
2019-10-05 15:12:36 +03:00
Anton Medvedev
b81de7b2b7
Add extra check of correct eval usage
2019-09-26 22:00:31 +03:00
Anton Medvedev
c50018a2f7
goimports
2019-07-02 14:36:09 +03:00
Anton Medvedev
f956a43747
Add Operator comment
2019-06-25 18:31:47 +03:00
Anton Medvedev
f718200b06
Add var in a..b optimization
2019-06-25 16:03:27 +03:00