29 Commits
Author SHA1 Message Date
Anton MedvedevandGitHub fee5690347 Refactor checker to use Nature (#665)
This PR introduces a new concept inside Expr's type checker - Nature.

It's an abstraction other reflect.Type which carries additional information about possible type, methods and builtin function.

I was able to find and fix a few bugs in type checker and optimizer. Implementation of nature concept has proven itself. As well nature will allow to bring more feature for type checker in future.

Why Nature? I was looking for a name to replace Type. Type name already carries much information, as well can be confused with reflect.Type. Nature name should be understood as "nature of the node", same as "type of the node".
2024-06-01 00:09:22 +02:00
Anton Medvedev 8589d34039 Add sum([]) optimization 2024-04-13 23:16:08 +02:00
Anton Medvedev 27b20607f1 Add sum(map()) optimization 2024-04-13 22:50:11 +02:00
SergeyandGitHub 2835692a5f Optimize boolean operations between all, any, none functions (#626) 2024-04-12 18:49:41 +02:00
Anton MedvedevandGitHub 3205e4186b Revert "Optimize boolean operations between all, any, one, none functions (#555)" (#625)
This reverts commit 8037acf0bb.
2024-04-10 10:58:17 +02:00
SergeyandGitHub 8037acf0bb Optimize boolean operations between all, any, one, none functions (#555) 2024-02-11 22:23:48 +01:00
Anton Medvedev 811a16b4fa Remove const range optimization 2023-12-22 22:49:31 +01:00
Anton Medvedev 551d2a7e0f Use expr-lang/expr 2023-12-03 21:53:01 +01:00
Anton Medvedev 46929e4646 Add map(filter()) optimization 2023-08-24 11:15:43 +02:00
Anton Medvedev 166d8b8ce9 Add filter()[-1] optimization 2023-08-24 11:15:43 +02:00
Anton Medvedev 8c52bd6d8b Add filter()[0] optimization 2023-08-24 11:15:43 +02:00
Anton Medvedev 22b3d6bf74 Add len(filter()) optimization 2023-08-24 11:15:43 +02:00
Anton Medvedev 00d167a791 Move code duplicate to conf package 2022-11-10 21:21:38 +01:00
Anton Medvedev 31ed24b493 Fix compiler fold optimization of "integer divide by zero" 2020-09-09 22:07:26 +02:00
Anton Medvedev 5e0ef67844 Use ast.Patch func 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 MedvedevandGitHub acba548cab Add ConstExpr 2020-03-10 08:36:12 +03:00
Anton MedvedevandGitHub 2836d109c5 Add memory budget 2020-03-02 13:43:39 +03:00
Anton Medvedev 0809f2c91b Refactor to use new parser 2020-02-25 09:33:17 +03:00
Anton Medvedev e2f2207d81 goimports 2019-07-02 14:34:48 +03:00
Anton Medvedev 3a506d7a3c Fix optimizer for in []int 2019-06-27 12:06:15 +03:00
Anton Medvedev 4c32accdba Fix optimizer for in array 2019-06-26 15:12:36 +03:00
Anton Medvedev 37a0db14ff Make optimized program unmarshalable 2019-06-26 11:21:45 +03:00
Anton Medvedev 83979d9691 Add in array optimization 2019-06-26 10:35:59 +03:00
Anton Medvedev 82236d001f Improve constant folding algorithm 2019-06-26 10:17:39 +03:00
Anton Medvedev c9cc2b9ca4 Copy type and location on patch 2019-06-25 18:25:24 +03:00
Anton Medvedev 02ca6fbf39 Add more optimizations 2019-06-25 16:25:14 +03:00
Anton Medvedev f718200b06 Add var in a..b optimization 2019-06-25 16:03:27 +03:00
Anton Medvedev 4547b362d9 Add constant folding optimization 2019-06-25 15:42:57 +03:00