Commit Graph

574 Commits (42bb3127f01c3d0ec7f76fa8be516b3b86b72e63)
 

Author SHA1 Message Date
Ibrahim Numanagić 42bb3127f0 Add property setters 2023-11-20 21:09:50 -08:00
Ibrahim Numanagić 1fc0655ea7 Fix static bool unification 2023-11-18 10:37:26 -08:00
Ibrahim Numanagić 99973373e0 Fix assign tests 2023-09-23 10:01:34 -07:00
Ibrahim Numanagić 6321a03868 Fix assign tests 2023-09-22 15:19:52 -07:00
Ibrahim Numanagić 502eed22f4 Add missing tests 2023-09-22 10:11:00 -07:00
Ibrahim Numanagić 9e6a4e5515 Fix access tests 2023-09-22 10:10:24 -07:00
Ibrahim Numanagić c6faa0ecfa Fix tests 2023-08-09 12:40:27 +02:00
Ibrahim Numanagić ef743a6227 Fix try-catch scoping 2023-08-08 22:58:08 +02:00
Ibrahim Numanagić c951f2906a Merge simplify & typecheck (basic tests passd) 2023-08-06 22:50:49 +02:00
Ibrahim Numanagić 23806aa072 Merge simplify & typecheck (basic tests passd) 2023-08-01 23:55:14 +02:00
Ibrahim Numanagić a073daca3a Merge simplify & typecheck: new name parser [wip] 2023-08-01 13:27:17 +02:00
Ibrahim Numanagić 7c345a8f39 Merge simplify & typecheck: new name parser [wip] 2023-07-15 23:55:07 +02:00
Ibrahim Numanagić 7bb9e199e3 Merge simplify & typecheck [wip] 2023-07-10 13:21:39 +02:00
Ibrahim Numanagić dae4b8ba16 Merge simplify & typecheck [wip] 2023-07-10 11:24:33 +02:00
Ibrahim Numanagić 87419e9ac3 Merge simplify & typecheck [wip] 2023-07-05 11:58:22 +02:00
Ibrahim Numanagić 9cad341b25 Merge simplify & typecheck: hello world done [wip] 2023-07-04 13:02:55 +02:00
Ibrahim Numanagić 50f0c3803a Merge simplify & typecheck [wip] 2023-06-25 00:17:52 +02:00
Ibrahim Numanagić bd6be10834 Merge simplify & typecheck [wip] 2023-05-28 19:08:32 -07:00
Ibrahim Numanagić bb5800faa1 Merge branch 'develop' of github.com:exaloop/codon into typecheck-v2 2023-05-10 12:32:41 -07:00
A. R. Shajii 136a719558 Bump version 2023-05-10 09:30:09 -04:00
Ibrahim Numanagić 47a2745f06
Better Jupyter support & Polymorphism improvements (#363)
* Remove vtables from objects (use __id__ only); Add static itemgetter

* Migrate to XEUS 3

* Fix XEUS patches

* Fix docs [skip ci]

* Use tuples for RTTI classes

* clang-format

* Add polymorphic to IR RefType

* Pass isPolymorphic to IR

* Update codegen for new poly ref types

* New RTTI memory layout; Fix #346

* Ellipsis class; handle ellipses

* Move all generated magics to Codon (__magic__)

* Fix vars_types

* Update polymorphic setter

* Fix compiler warnings

* Fix pyext assert

* Update ellipsis

* Update pure/derives tags

* Update dataclass order magics

* Add pure/derives tags

* Fix partial printing

* Add extra tuple test

---------

Co-authored-by: A. R. Shajii <ars@ars.me>
2023-05-10 09:28:25 -04:00
Sean Farley fb46137161
Fix GCMapAllocator not being used (#369)
* git: ignore clangd cache

* git: also ignore {build,install} dirs with dashes

* re2: fix GCMapAllocator definition

Previously, the GCMapAllocator specified the wrong template arguments
and, thus, would not actually be used. This can be verified by the fact
that `GCMapAllocator::deallocate` used an undefined symbol:
`seq_gc_free`.

C++20 makes this an error like so:

```
error: static assertion failed due to requirement 'is_same<GCMapAllocator<std::pair<seq_str_t, long long>, re2::RE2>, GCMapAllocator<std::pair<const std::pair<seq_str_t, long long>, re2::RE2>, re2::RE2>>::value': [allocator.requirements] states that rebinding an allocator to the same type should result in the original allocator
    static_assert(is_same<allocator_type, __rebind_alloc<__alloc_traits, value_type> >::value,
    ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 errors generated.
```

This patch fixes the undefined symbol of `seq_gc_free` with `seq_free`
along with fixing `<Key, Value>` -> `<std::pair<Key, Value>>`.
2023-05-05 08:36:43 -04:00
Ibrahim Numanagić 839b9e7935 Merge branch 'new-super' into typecheck-v2 2023-05-04 09:03:02 -07:00
Ibrahim Numanagić 53677d859d Fix pyext assert 2023-05-02 22:39:45 -07:00
Ibrahim Numanagić 145c4acd99 Fix compiler warnings 2023-05-02 21:17:42 -07:00
A. R. Shajii 6976dc79d5 Update polymorphic setter 2023-05-02 23:54:54 -04:00
Ibrahim Numanagić 403aa991d1 Fix vars_types 2023-05-02 18:27:28 -07:00
Ibrahim Numanagić 567275c7e6 Move all generated magics to Codon (__magic__) 2023-05-02 13:09:19 -07:00
Ibrahim Numanagić 8dd71aa1a4 Ellipsis class; handle ellipses 2023-05-01 16:18:18 -07:00
Ibrahim Numanagić 28b3b00b64 New RTTI memory layout; Fix #346 2023-05-01 15:34:06 -07:00
A. R. Shajii bb14bf1547 Update codegen for new poly ref types 2023-05-01 11:57:54 -04:00
Ibrahim Numanagić 6ee620ba93 Pass isPolymorphic to IR 2023-04-27 16:13:08 -07:00
A. R. Shajii 3ef57416b9 Merge branch 'new-super' of https://github.com/exaloop/codon into new-super 2023-04-27 17:56:35 -04:00
A. R. Shajii c737e28487 Add polymorphic to IR RefType 2023-04-27 17:56:34 -04:00
A. R. Shajii bcbca1ef4b clang-format 2023-04-27 17:56:12 -04:00
Ibrahim Numanagić e51ac0de28 Use tuples for RTTI classes 2023-04-27 13:03:14 -07:00
A. R. Shajii 32759bafb2 Fix docs [skip ci] 2023-04-24 11:49:00 -04:00
Ibrahim Numanagić 783d319a83 Fix XEUS patches 2023-04-20 11:26:16 -07:00
Ibrahim Numanagić 5b44aa33c9 Migrate to XEUS 3 2023-04-19 10:32:06 -07:00
Ibrahim Numanagić 710a38539f Remove vtables from objects (use __id__ only); Add static itemgetter 2023-04-17 12:11:41 -07:00
A. R. Shajii 12c858970d Fix typo [skip ci] 2023-04-13 17:35:53 -04:00
A. R. Shajii 5613c1a84b
v0.16 (#335)
* Add Python extension lowering pass

* Add DocstringAttribute

* Add extension module codegen

* Handle different argument counts efficiently

* Add warnings to extension lowering

* Fix module name

* Fix extension codegen

* Fix argument check

* Auto-convert Codon exceptions to Python exceptions

* Fix #183

* Fix #162; Fix #135

* Fix #155

* Fix CPython interface in codegen

* Fix #191

* Fix #187

* Fix #189

* Generate object file in pyext mode

* Convert Codon exceptions to Python exceptions

* Fix vtable init; Fix failing tests on Linux

* Fix #190

* Fix #156

* Fix union routing

* Remove need for import python

* Automatic @export and wrapping for toplevel functions

* Reorganize API

* Add Python extension IR structs

* Add special calls for no-suspend yield-expr

* Add special calls for no-suspend yield-expr

* pyextension.h support [wip]

* pyextension.h support [wip]

* pyextension.h support

* pyextension.h support for toplevel functions

* clang-format

* Add PyFunction::nargs field

* Update pyextension codegen (WIP)

* SUpport nargs

* Add support for @pycapture

* PyType codegen (WIP)

* Py method codegen (WIP)

* Add type ptr hook

* Add getset codegen

* Add type alloc function

* Add type pointer hook codegen

* Re-organize codegen

* Add member codegen

* Update module init codegen

* Update module init codegen

* Add support for typePtrHook and new to/from_py hooks

* Fix extension codegen

* Fix init codegen

* Fix init codegen; add "tp_new" slot

* Fix type hook

* Add extra flags

* Specialized wrappers (PyType specs)

* Add static Python link option

* Fix C imports

* Add guards

* Remove unused field

* Python mode only when pyExt set

* Update python module

* Fix assert

* Update codegen/passes

* Fix tuple parsing in index expression

* Fix empty tuple unification

* Do not Cythonize underscore fns

* clang-format

* Fix switch

* Add Py support for cmp/setitem

* Add Py support for cmp/setitem

* Add type is support

* GetSet support

* clang-format

* GetSet support (fixes)

* Avoid useless vtable alloc

* Add iter support

* Fix size_t capture bug

* clang-format

* Fix POD type unification with tuples

* Add __try_from_py__ API

* Fix annotation

* Add static reflection methods (setattr; internal.static.*); refactor PyExt to python.codon; handle errors and kwargs in PyExt

* Python compat fixes

* Update Python object conversions

* Fix PyErrors

* clang-format; add copyright

* Add PyFunction::keywords field

* Fix JIT MRO handling; Refactor out Jupyter support

* Refactor out Jupyter support

* Add support for custom linking args (link=[]) to TOML plugins

* Fix tests

* Use g++ instead of gcc

* Fix Jupyter CMAKE

* Fix Jupyter CMAKE

* Add _PyArg_Parser definition

* Add complex64 type

* Add extra complex64 tests

* Fix Python calls; add staticenumerate

* Fix call

* Fix calls

* Update pyext wrappers

* Fix staticenumerate; Support static calls in tuple()

* Fix pyext routing

* Add add/mul for tuples

* clang-format

* Fix pyext codegen

* Fix wrap_multiple

* Add seq_alloc_atomic_uncollectable

* Fix default generics issue

* Add binary/ternary ops

* Fix missing generic issue

* Fix number slots

* Update pow

* Remove unnecessary pyobj

* Fix allocation

* Refactor errors

* Add test extension

* Fix formatting

* clang-format

* Fix getitem/setitem/delitem in pyext

* Fix pyext iterators

* Add builtin pow() (fix #294)

* Fix #244

* Fix #231

* Fix #229

* Fix #205

* Update docs

* Fix error message

* Add pyext tests

* Add pyext support for @property

* Add pyext support for toplevel fns and @tuple classes

* More pyext tests

* More pyext tests

* Fix file error checking

* More pyext tests

* Update pyext tests

* Update docs

* Add pyext test to CI

* Add pyext support for @tuple.__new__

* Add pyext support for @tuple.__new__

* Fix hetero-tuple issue with fn_overloads

* More pyext tests

* Bump versions

* Fix del magic in pyext

* Fix init magic for tuples in pyext

* Have test-pypi only run on develop branch

* Make exception type indices unnamed-addr

* Fix #316; Fix #317 (slash issue)

* Use uncollectible-alloc for vtable

* Fix #249

* Add pyext docs

* Fix #249; Fix clashing vtables; Fix super() and class_copy

* Add content-atomic type property instruction

* __contents_atomic__ support

* Update internal functions

* Use PIC when generating Python extension

* Cleanup

* Add Dockerfile & fix -fPIC

* Cleanup

* Fix setup.py

* Fix pyext fn iteration

* Fix CI

* clang-format

* Update long conversions in Py bridge

* Support wide-int to str conversions

* Fix test

* Add pow for arbitrary-width ints

* Fix Linux backtraces

* Cleanup

* Add more tests

* Fix docs; Remove tuple.__add__ for scalars

* Update docs

---------

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2023-04-12 18:13:54 -04:00
A. R. Shajii 7fe97638d2 Update internal functions 2023-04-04 21:22:13 -04:00
Ibrahim Numanagić 716b1b8469 __contents_atomic__ support 2023-04-04 18:06:22 -07:00
A. R. Shajii bb72a6d830 Add content-atomic type property instruction 2023-04-04 21:01:43 -04:00
Ibrahim Numanagić 8b339e8fcd Fix #249; Fix clashing vtables; Fix super() and class_copy 2023-04-04 17:16:23 -07:00
A. R. Shajii daaf014b5a Add pyext docs 2023-04-04 12:08:14 -04:00
Ibrahim Numanagić 439396c613 Fix #249 2023-04-03 17:22:49 -07:00
Ibrahim Numanagić a67bf61ddb Merge branch 'pyext' of github.com:exaloop/codon into pyext 2023-04-03 13:06:06 -07:00
A. R. Shajii 67d4958e52 Use uncollectible-alloc for vtable 2023-04-03 16:03:08 -04:00