Commit Graph

13 Commits (develop)

Author SHA1 Message Date
A. R. Shajii 11d281d1b3
Updates from enterprise version (#571) 2024-07-30 19:35:27 -04:00
A. R. Shajii 38e08b409a
Doc updates (#385)
* Documentation updates

* Documentation updates

* Update README.md

* Fix tuple indexing error messages

* Update roadmap, differences

* Update README, FAQ

* Trim newline

* Update README.md

* Update README.md

* Update README.md

* Update roadmap.md

* Update cpp.md

* Update README.md

* Update roadmap.md

* Update README.md

* Fix test

* clang-format

* Fix exporting function named "main"

* Update export test

* Fix paths

* Rename extra/python -> jit

* Update license change date

* Minor docs updates

* Re-add __init__.py

* Update header

* Update gitignore

* Update README.md

---------

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
Co-authored-by: Ibrahim Numanagić <inumanag@users.noreply.github.com>
2023-05-23 17:59:26 -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
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 f4323a80a2
Fix miscellaneous issues (#85)
* Fix #75

* Build on macOS 11 for #72

* Fix #76

* Fix test

* Fix generator example in docs

* Fix Python/Cython packaging; Fix #80

* Fix tests

* Fix tests

* Fix tests

* Fix tests

* Fix syntax

* Fix CI

* Fix CI

* Fix CI; Dominate imported bindings

* Fix CI; Dominate imported bindings

* Fix .gitignore

* Fix tests

* Fix rm command

* Format

* clang-format

* Organize and optimize string formatting

* Fix format error message

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2022-12-12 20:54:01 -05:00
Ibrahim Numanagić cb945f569c
Typechecker refactoring (#20)
* Initial refactor commit

* Support external vars

* Simplify refactor; Python scoping [wip]

* Python scoping [wip]

* Python scoping [fix loops; wip]

* Fix lambdas

* Python scoping [test fixes; wip]

* Fix scoping [wip]

* Fix basic tests [no-ci]

* Fix tests

* CallExpr refactoring [wip]

* CallExpr refactoring [wip]

* Remove activeUnbounds tracking

* Add core.codon

* Move Function and other core types to core.codon; Revamp Function and Callable types

* Refactor IntExpr, FloatExpr and CallExpr

* Refactor ClassStmt

* Refactor context, IdExpr and DotExpr

* Refactor DotExpr and AssignStmt

* Refactor ImportStmt

* Refactor FunctionStmt

* Refactor

* Remove UpdateStmt

* Refactor AssignReplacementVisitor

* Make SimplifyVisitor in-place

* Fix new scoping

* Fix import type alias handling

* Add docstrings; Complete Simplify refactoring

* Fixes for seqtest

* Refactor typecheck [wip]

* Refactor typecheck [wip]

* Refactor typecheck/access; Remove void anduse NoneType; Fix #18

* Refactor typecheck/assign

* clang-format and cmake-format

* Fix none types in IR

* Multi-error support in simplify

* Fix IR tests for new void

* Simplify ClassStmt

* Refactor cond.cpp

* Refactor error.cpp

* Refactor function.cpp and simplify unbounds

* Refactor op.cpp

* Refactor call.cpp [wip] [no-ci]

* seqassertn updates [noci]

* Refactor call.cpp

* Refactor call.cpp

* Refactor call.cpp

* Refactor typecheck

* clang-tidy updates [noci]

* Refactor infer.cpp [wip]

* Refactor infer.cpp

* Refactor wrapExpr

* Remove visitedAsts

* Remove old base logic

* Refactor typecheck ctx

* Fix JIT bug

* Fix JIT tests

* Scoping fixes [wip] [noci]

* Fix ImperativeForFlow var store

* Add newlines [noci]

* Dump IR module with log flag

* Fix scoping bugs; Add &, ^ and | static operations; Address stylistic review issues

* Fix side effect analysis for for-loops

* Add support for class variables and ClassVar

* Refactor special dot-member cases

* Add codon app tests

* Fix class variables; clang-tidy

* Fix __argv__

* Add datetime constants and update tests

* Fix #25; Add Py_None, Py_True and Py_False; External var support [wip]

* External var support [wip]

* Dump LLVM IR when debug flags are active

* clang-format

* Fix arg var construction

* Extern var fixes

* Undo extern var changes related to stdout etc.

* Fix tuple magics

* Fix extern vars and tuple magics

* Fix duplicate var name error

* Fix extern vars

* Fix #16

* Fix side-effect analysis for try-catch

* Move test C var to test executable

* Add staticmethod

* Fix var status for try-catch

* Fix tests

* Fix shell var name

* Fix test

* Fix app test

* Fix scoping issue (remove dominated identifier from stack)

* Fix no-pie issue

* Use PIC when building library object

* Don't use -no-pie when building library [noci]

* Use -relocation-model=pic in test

* Fix lib build on Linux

* Fix lib build

* Update exceptions to use subclasses vs. header

* Fix __repr__

* Fix tests

* Fix exceptions test

* Don't build docs

Co-authored-by: A. R. Shajii <ars@ars.me>
2022-07-26 16:06:00 -04:00
Ibrahim Numanagić 12e8fe7666
@codon Python decorator and Python interop fixes (#19)
* Codon decorator

* Move to extra/cython, add error handling

* Small fixes

* CR

* CR

* Fix cython CI

* Fix cython CI v2

* Fix cython CI v3

* Fix cython CI v4

* Fix cython CI v5

* Fix cython CI v6

* Fix cython CI v7

* Fix cython CI v8

* Fix cython CI v9

* Fix cython CI v10

* Fix cython CI v11

* CR

* Fix CI

* Fix CI

* Fix CI

* Fix CI

* Fix CI

Co-authored-by: Ishak Numanagić <ishak.numanagic@gmail.com>
2022-03-31 10:22:26 +02:00
Ibrahim Numanagić cc634d1940
Improved logic for handling overloaded functions (#10)
* Backport seq-lang/seq@develop fixes

* Backport seq-lang/seq@develop fixes

* Select the last matching overload by default (remove scoring logic); Add dispatch stubs for partial overload support

* Select the last matching overload by default [wip]

* Fix various bugs and update tests

* Add support for partial functions with *args/**kwargs; Fix partial method dispatch

* Update .gitignore

* Fix grammar to allow variable names that have reserved word as a prefix

* Add support for super() call

* Add super() tests; Allow static inheritance to inherit @extend methods

* Support for overloaded functions [wip; base logic done]

* Support for overloaded functions

* Update .gitignore

* Fix partial dots

* Rename function overload 'super' to 'superf'

* Add support for super()

* Add tests for super()

* Add tuple_offsetof

* Add tuple support for super()

* Add isinstance support for inherited classes; Fix review issues

Co-authored-by: A. R. Shajii <ars@ars.me>
2022-01-11 20:39:15 -05:00
Ibrahim Numanagić 887be68011 Add Jupyter plugin support 2021-12-06 01:59:32 -08:00
Ibrahim Numanagić 5503e71ace Add Jupyter Xeus support 2021-11-01 03:31:24 -07:00
Ibrahim Numanagić c46b513ea7 Update .gitignore 2021-11-01 03:30:02 -07:00
A. R. Shajii 65d5a9895b Update .gitignore 2021-10-03 11:15:12 -04:00
A. R. Shajii ede7765171 Initial commit 2021-09-27 14:02:44 -04:00