Commit Graph

104 Commits (develop)

Author SHA1 Message Date
A. R. Shajii 3c4272d92a
Fix out-of-range float parsing (#579) 2024-08-14 16:13:29 -04:00
A. R. Shajii 5e2d04188e Add input() built-in function 2024-08-05 17:31:45 -04:00
A. R. Shajii 11d281d1b3
Updates from enterprise version (#571) 2024-07-30 19:35:27 -04:00
A. R. Shajii ffeeca274a
Use fast_float library for str-to-int/float (#561)
* Use fast_float library for str-to-int/float

* Fix str-to-int conversions
2024-05-22 10:22:50 -04:00
A. R. Shajii 0e42fded1a
2024 updates (#548)
* Update copyright dates in stdlib

* Update copyright dates in cpp files

* Update copyright dates in h files

* Update copyright dates in py files

* Bump version

* Update LICENSE

* Update release notes
2024-03-02 16:30:03 -05:00
Philip Kaelbling 4400e3d849
Generic Slices (#544)
* Changed slice fields to generics, added check to adjust_indices

* fix typecheck

* Refactored Slice class, fixed test

* fix test

* made slice fields optional, updated tests

* Fix list optimization for new slices; update tests

---------

Co-authored-by: A. R. Shajii <ars@ars.me>
2024-02-25 11:42:31 -05:00
A. R. Shajii 4be3bbf9e7
Add allocation hoist optimization (#534)
* Add allocation hoist optimization

* Fix analysis of nested loops

* Check for irreducible cycles

* Add additional check when analyzing insertvalue

* Add allocation-specific attributes in LLVM IR

* Remove unused calloc function from runtime library

* Add float -> intN and float -> uintN constructors

* Only hoist atomic allocations

* Update codegen

* Simplify codegen

* Change allocation hoist pass to be a function pass

* Fix loop iteration order

* Use 'struct' instead of 'class'

* Add check for phi instructions in header; refactor

* Remove unneeded checks

* Fix C++ benchmark

* Remove annotation
2024-02-22 19:31:19 -05:00
Ibrahim Numanagić c16dfb5654
Fix sub-imports (#538)
* Fix sub-imports

* Fix sub-imports

* Remove log lines

---------

Co-authored-by: A. R. Shajii <ars@ars.me>
2024-02-07 10:36:07 -05:00
A. R. Shajii e40527f845
Add from-str constructors for several types (#533)
* Add from-str constructors for several types

* Fix tests

* Disable test
2024-01-25 13:41:36 -05:00
A. R. Shajii c8bc944a50
Updates - January 2024 (#530)
* Add bz2

* Support 'b' prefix on str

* List.index() throws an exception if item not found

This is consistent with Python. Added find() method that returns -1 similar to str (although this does not exist in Python's list).

* Update complex64 str and repr

* Fix tests

* Add 'default' arg to min() and max()
2024-01-19 11:22:20 -05:00
A. R. Shajii d23c8c7a75
Support "key" argument on min() and max() builtins (#505)
* Support "key" argument on min() and max() builtins

* Delay overload selection when arguments are not known (delayed dispatch)

* Delay 'is None' for 'Optional[T]' until type is known

* Fix union overload selection

* Add static string slicing

* Fix itertools.accumulate

* Fix list comprehension optimization ( minitech:imports-in-list-comprehensions )

* Fix match or patterns

* Fix tests and faulty static tuple issue

* Fix OpenMP reductions with new min/max functions

* Fix domination of dominated bindings; Fix hasattr overloads; Fix arg=None handling

* Fix empty return handling; Mark generators with an attribute

* Fix #487

* Fix test

* Fix IR pass

---------

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2024-01-12 19:27:29 -05:00
A. R. Shajii d609629489
Format 1-element tuples as "(x,)" (#521)
* Format 1-element tuples as "(x,)"

Currently, single-element tuple "repr" / "str" gives "(x)", but it should really give "(x,)" according to Python.

* Fix tests
2024-01-02 13:35:55 -05:00
Ibrahim Numanagić 416cc5fa59
Bugfixes (Dec 2023) (#515)
* Delay overload selection when arguments are not known (delayed dispatch)

* Delay 'is None' for 'Optional[T]' until type is known

* Fix union overload selection

* Add static string slicing

* Fix itertools.accumulate

* Fix list comprehension optimization ( minitech:imports-in-list-comprehensions )

* Fix match or patterns

* Fix tests and faulty static tuple issue
2023-12-26 09:35:03 -05:00
A. R. Shajii d1cd21b3e3
Add complex str constructor (#502) 2023-12-05 15:48:34 -05:00
A. R. Shajii b4a3f890ff
Property setters (#501)
* Fix __from_gpu_new__

* Fix GPU tests

* Update GPU debug codegen

* Add will-return attribute for GPU compilation

* Fix isinstance on unresolved types

* Fix union type instantiation and pendingRealizations placement

* Add float16, bfloat16 and float128 IR types

* Add float16, bfloat16 and float128 types

* Mark complex64 as no-python

* Fix float methods

* Add float tests

* Disable some float tests

* Fix bitset in reaching definitions analysis

* Fix static bool unification

* Add property setters

* Remove log

* Add Union hasattr support

* Fix union bugs; Move union logic to internal.codon; Add fn_can_call for any expression

* Fix isinstance(x, Union)

---------

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2023-12-04 11:14:08 -05:00
A. R. Shajii 78a3d7d982
Union hasattr (#500)
* Fix __from_gpu_new__

* Fix GPU tests

* Update GPU debug codegen

* Add will-return attribute for GPU compilation

* Fix isinstance on unresolved types

* Fix union type instantiation and pendingRealizations placement

* Add float16, bfloat16 and float128 IR types

* Add float16, bfloat16 and float128 types

* Mark complex64 as no-python

* Fix float methods

* Add float tests

* Disable some float tests

* Fix bitset in reaching definitions analysis

* Fix static bool unification

* Add property setters

* Remove log

* Add Union hasattr support

---------

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2023-11-27 12:24:21 -05:00
A. R. Shajii 7fdbc7f21e
Property setters (#499)
* Fix __from_gpu_new__

* Fix GPU tests

* Update GPU debug codegen

* Add will-return attribute for GPU compilation

* Fix isinstance on unresolved types

* Fix union type instantiation and pendingRealizations placement

* Add float16, bfloat16 and float128 IR types

* Add float16, bfloat16 and float128 types

* Mark complex64 as no-python

* Fix float methods

* Add float tests

* Disable some float tests

* Fix bitset in reaching definitions analysis

* Fix static bool unification

* Add property setters

* Remove log

---------

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2023-11-22 10:43:25 -05:00
A. R. Shajii 2c7440768d
GPU compilation fixes (#496)
* Fix __from_gpu_new__

* Fix GPU tests

* Update GPU debug codegen

* Add will-return attribute for GPU compilation

* Fix isinstance on unresolved types

* Fix union type instantiation and pendingRealizations placement

* Add float16, bfloat16 and float128 IR types

* Add float16, bfloat16 and float128 types

* Mark complex64 as no-python

* Fix float methods

* Add float tests

* Disable some float tests

* Fix bitset in reaching definitions analysis

* Fix static bool unification

---------

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2023-11-18 15:14:05 -05:00
A. R. Shajii ad504b78b0 Return int from floor(), ceil() and trunc() 2023-10-31 10:18:54 -04:00
A. R. Shajii 1e6382c564
Fix domination within deeply nested blocks (#485)
Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2023-10-03 17:04:15 -04:00
Ibrahim Numanagić ce459c5667
New Tuple machinery (#462)
* Refactor Tuple class

* Add Tuple[N,...] support; Fix inline operators with list brackets

* Fix Tuple[N,...] support

* Merge Sequre SIMD changes

* Fix repeat-tuple unification

* Fix staticlen in OpenMP

* Fix isinstance unification

* Fix delayed unification with static realization

* Fix CI

* Cleanup

* Use "fcmp une" in float.__ne__()

---------

Co-authored-by: A. R. Shajii <ars@ars.me>
2023-09-26 10:49:14 -04:00
Ibrahim Numanagić 750bb28c9c
Bugfixes 2023-08 (#440)
* Fix type argument overload issue; Fix Cython version for CI

* Add __contains__ for kwargs

* Add get() for kwargs

* Add static <<, >> and unary ~

* Fix CI

* Fix OpenMP "ordered" clause

* Fix static ~

* Fix Cython 3 issues

* Fix Python MANIFEST.in

---------

Co-authored-by: A. R. Shajii <ars@ars.me>
2023-08-12 10:39:45 -04:00
A. R. Shajii 7198a0971a Fix complex __bool__() 2023-07-31 13:02:29 -04:00
A. R. Shajii 89298918cb Add float32 constructor to complex64 2023-07-24 11:30:46 -04:00
A. R. Shajii d12800c855
Fix zero-capacity lists (#420) 2023-07-12 10:19:24 -04:00
A. R. Shajii 6bb26e0187
Misc fixes (#410)
* Fix corner case when typechecking scoped names with static compilation

* Undo log

* Fix nested loop domination; Minor aestethic fixes

* clang-format

* Add slice indices() method

* Fix overloads with static arguments

* Update itertools combinatorics functions

* Fix import domination issue (missing stack insert)

* Fix itertools

* Remove log

* Bump version

---------

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2023-07-02 18:50:43 -04:00
A. R. Shajii d1a8d1a79b
Fix GCD; add LCM (#396) 2023-06-02 22:55:47 -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
A. R. Shajii 5085dae04d Add math.prod() 2023-05-14 12:36:42 -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
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
Josh Soref e5e19a663a
Spelling (#276)
* spelling: about

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: adopted

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: between

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: convenience

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: ellipsis

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: improve

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: indicates

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: intermediate

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: into

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: multiple

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: quartiles

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: reentrant

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: relevant

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: supports

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: reproducible

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: wrappers

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

---------

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2023-03-20 19:13:39 -04:00
Ibrahim Numanagić 5f13644751
Various bug fixes (#185)
* Fix #183

* Fix #162; Fix #135

* Fix #155

* Fix #191

* Fix #187

* Fix #189

* Fix vtable init; Fix failing tests on Linux

* Fix #190

* Fix #156

* Fix union routing

* Format

---------

Co-authored-by: A. R. Shajii <ars@ars.me>
2023-02-05 18:53:15 -05:00
A. R. Shajii 5de12ee2f7
Add math.fsum() (#182) 2023-01-25 13:01:22 -05:00
A. R. Shajii bac6ae58dd
Generator argument optimization (and more) (#175)
* Fix ABI incompatibilities

* Fix codon-jit on macOS

* Fix scoping bugs

* Fix .codon detection

* Handle static arguments in magic methods; Update simd; Fix misc. bugs

* Avoid partial calls with generators

* clang-format

* Add generator-argument optimization

* Fix typo

* Fix omp test

* Make sure sum() does not call __iadd__

* Clarify difference in docs

* Fix any/all generator pass

* Fix  InstantiateExpr simplification; Support .py as module extension

* clang-format

* Bump version

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2023-01-17 10:21:59 -05:00
A. R. Shajii 0bec6e2627
Refactor IR; updates for 2023 (#157)
* Refactor IR

* Update image size in docs
2023-01-08 14:24:10 -05:00
A. R. Shajii fd43d67f28
Optimize list additions (#143)
* Optimize list additions

* Fix helper bug

* Add tests

* Add more magic name constants

* Minor API cleanup

* Format

* Slightly improve appends
2022-12-30 23:04:29 -05:00
Haris Smajlović 39eef25940
UInt[N] constructor bugfix (#126)
* UInt[N](-1) bugfix

* Popcnt tests extended
2022-12-23 12:46:29 -05:00
Ibrahim Numanagić a2158ad045
Sequre scoping fix (#121)
* Fix ABI incompatibilities

* Fix codon-jit on macOS

* Fix scoping bugs
2022-12-18 13:55:37 -05: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ć 5de233a64e
Dynamic Polymorphism (#58)
* Use Static[] for static inheritance

* Support .seq extension

* Fix #36

* Polymorphic typechecking; vtables [wip]

* v-table dispatch [wip]

* vtable routing [wip; bug]

* vtable routing [MVP]

* Fix texts

* Add union type support

* Update FAQs

* Clarify

* Add BSL license

* Add makeUnion

* Add IR UnionType

* Update union representation in LLVM

* Update README

* Update README.md

* Update README

* Update README.md

* Add benchmarks

* Add more benchmarks and README

* Add primes benchmark

* Update benchmarks

* Fix cpp

* Clean up list

* Update faq.md

* Add binary trees benchmark

* Add fannkuch benchmark

* Fix paths

* Add PyPy

* Abort on fail

* More benchmarks

* Add cpp word_count

* Update set_partition cpp

* Add nbody cpp

* Add TAQ cpp; fix word_count timing

* Update CODEOWNERS

* Update README

* Update README.md

* Update CODEOWNERS

* Fix bench script

* Update binary_trees.cpp

* Update taq.cpp

* Fix primes benchmark

* Add mandelbrot benchmark

* Fix OpenMP init

* Add Module::unsafeGetUnionType

* UnionType [wip] [skip ci]

* Integrate IR unions and Union

* UnionType refactor [skip ci]

* Update README.md

* Update docs

* UnionType [wip] [skip ci]

* UnionType and automatic unions

* Add Slack

* Update faq.md

* Refactor types

* New error reporting [wip]

* New error reporting [wip]

* peglib updates [wip] [skip_ci]

* Fix parsing issues

* Fix parsing issues

* Fix error reporting issues

* Make sure random module matches Python

* Update releases.md

* Fix tests

* Fix #59

* Fix #57

* Fix #50

* Fix #49

* Fix #26; Fix #51; Fix #47; Fix #49

* Fix collection extension methods

* Fix #62

* Handle *args/**kwargs with Callable[]; Fix #43

* Fix #43

* Fix Ptr.__sub__; Fix polymorphism issues

* Add typeinfo

* clang-format

* Upgrade fmtlib to v9; Use CPM for fmtlib; format spec support; __format__ support

* Use CPM for semver and toml++

* Remove extension check

* Revamp str methods

* Update str.zfill

* Fix thunk crashes [wip] [skip_ci]

* Fix str.__reversed__

* Fix count_with_max

* Fix vtable memory allocation issues

* Add poly AST tests

* Use PDQsort when stability does not matter

* Fix dotted imports; Fix  issues

* Fix kwargs passing to Python

* Fix #61

* Fix #37

* Add isinstance support for unions; Union methods return Union type if different

* clang-format

* Nicely format error tracebacks

* Fix build issues; clang-format

* Fix OpenMP init

* Fix OpenMP init

* Update README.md

* Fix tests

* Update license [skip ci]

* Update license [ci skip]

* Add copyright header to all source files

* Fix super(); Fix error recovery in ClassStmt

* Clean up whitespace [ci skip]

* Use Python 3.9 on CI

* Print info in random test

* Fix single unions

* Update random_test.codon

* Fix polymorhic thunk instantiation

* Fix random test

* Add operator.attrgetter and operator.methodcaller

* Add code documentation

* Update documentation

* Update README.md

* Fix tests

* Fix random init

Co-authored-by: A. R. Shajii <ars@ars.me>
2022-12-04 19:45:21 -05:00
A. R. Shajii e1016f9e9a
Upgrade to LLVM 15 (#56)
* Upgrade to LLVM 15 (WIP)

* Call `setPresplitCoroutine()` on coro LLVM funcs

* Use new pass manager

* Update deps

* Update docs

* Fix exceptions on M1

* Add libunwind

* Use Orc and JITLink for "codon run"

* JITLink integration

* Fix callback

* Fix strbuf, fix GC root registration

* Fix test init

* Fix llvm function

* Fix pickle, float atomics

* Add TargetLibraryAnalysis

* Use new LLVM pass manager in GPU codegen

* Fix libunwind linking

* Fix libunwind

* Fix GPU passes

* Don't link libunwind explicitly

* Bump version

* Update plugins for new pass manager

* Fix bash error

* Fix GPU GV extraction

* Move simd module to experimental folder

* Update file read

* Add benchmark programs

* Add dynamic tuple

* Fix parser tuple slicing bug

* Make DynamicTuple interoperable with Tuple

* Fix DynamicTuple GPU interop

* Dockerize builds

* Simplify CMake

* Revert "Simplify CMake"

This reverts commit 08d2920349.

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2022-10-14 09:31:10 -04:00
A. R. Shajii 543324d347
Implement reaching definitions using bitsets (#55)
* Implement reaching definitions using bitsets

Reduced runtime from ~3s to <0.1s in Biser example

* Add comments and minor refactor

* Fix kill set initialization

* Fix reaching defs in entry

* More comments and minor refactor
2022-09-22 11:01:12 -04:00
A. R. Shajii b3d5542eff Remove IR type matching
Current implementation would fail for recursive types like `class X: x: Optional[X]`, and was not used anywhere.
2022-09-20 15:59:29 -04:00
A. R. Shajii ea48d68dc5 Fix empty set repr 2022-09-19 09:58:57 -04:00
A. R. Shajii 74bc584393 Improve collection-to-str conversions 2022-09-19 09:55:56 -04:00
A. R. Shajii 8a63e73c82 Use memcpy to concatenate lists 2022-09-18 16:43:42 -04:00
A. R. Shajii ebd344f894
GPU and other updates (#52)
* Add nvptx pass

* Fix spaces

* Don't change name

* Add runtime support

* Add init call

* Add more runtime functions

* Add launch function

* Add intrinsics

* Fix codegen

* Run GPU pass between general opt passes

* Set data layout

* Create context

* Link libdevice

* Add function remapping

* Fix linkage

* Fix libdevice link

* Fix linking

* Fix personality

* Fix linking

* Fix linking

* Fix linking

* Add internalize pass

* Add more math conversions

* Add more re-mappings

* Fix conversions

* Fix __str__

* Add decorator attribute for any decorator

* Update kernel decorator

* Fix kernel decorator

* Fix kernel decorator

* Fix kernel decorator

* Fix kernel decorator

* Remove old decorator

* Fix pointer calc

* Fix fill-in codegen

* Fix linkage

* Add comment

* Update list conversion

* Add more conversions

* Add dict and set conversions

* Add float32 type to IR/LLVM

* Add float32

* Add float32 stdlib

* Keep required global values in PTX module

* Fix PTX module pruning

* Fix malloc

* Set will-return

* Fix name cleanup

* Fix access

* Fix name cleanup

* Fix function renaming

* Update dimension API

* Fix args

* Clean up API

* Move GPU transformations to end of opt pipeline

* Fix alloc replacements

* Fix naming

* Target PTX 4.2

* Fix global renaming

* Fix early return in static blocks; Add __realized__ function

* Format

* Add __llvm_name__ for functions

* Add vector type to IR

* SIMD support [wip]

* Update kernel naming

* Fix early returns; Fix SIMD calls

* Fix kernel naming

* Fix IR matcher

* Remove module print

* Update realloc

* Add overloads for 32-bit float math ops

* Add gpu.Pointer type for working with raw pointers

* Add float32 conversion

* Add to_gpu and from_gpu

* clang-format

* Add f32 reduction support to OpenMP

* Fix automatic GPU class conversions

* Fix conversion functions

* Fix conversions

* Rename self

* Fix tuple conversion

* Fix conversions

* Fix conversions

* Update PTX filename

* Fix filename

* Add raw function

* Add GPU docs

* Allow nested object conversions

* Add tests (WIP)

* Update SIMD

* Add staticrange and statictuple loop support

* SIMD updates

* Add new Vec constructors

* Fix UInt conversion

* Fix size-0 allocs

* Add more tests

* Add matmul test

* Rename gpu test file

* Add more tests

* Add alloc cache

* Fix object_to_gpu

* Fix frees

* Fix str conversion

* Fix set conversion

* Fix conversions

* Fix class conversion

* Fix str conversion

* Fix byte conversion

* Fix list conversion

* Fix pointer conversions

* Fix conversions

* Fix conversions

* Update tests

* Fix conversions

* Fix tuple conversion

* Fix tuple conversion

* Fix auto conversions

* Fix conversion

* Fix magics

* Update tests

* Support GPU in JIT mode

* Fix GPU+JIT

* Fix kernel filename in JIT mode

* Add __static_print__; Add earlyDefines; Various domination bugfixes; SimplifyContext RAII base handling

* Fix global static handling

* Fix float32 tests

* FIx gpu module

* Support OpenMP "collapse" option

* Add more collapse tests

* Capture generics and statics

* TraitVar handling

* Python exceptions / isinstance [wip; no_ci]

* clang-format

* Add list comparison operators

* Support empty raise in IR

* Add dict 'or' operator

* Fix repr

* Add copy module

* Fix spacing

* Use sm_30

* Python exceptions

* TypeTrait support; Fix defaultDict

* Fix earlyDefines

* Add defaultdict

* clang-format

* Fix invalid canonicalizations

* Fix empty raise

* Fix copyright

* Add Python numerics option

* Support py-numerics in math module

* Update docs

* Add static Python division / modulus

* Add static py numerics tests

* Fix staticrange/tuple; Add KwTuple.__getitem__

* clang-format

* Add gpu parameter to par

* Fix globals

* Don't init loop vars on loop collapse

* Add par-gpu tests

* Update gpu docs

* Fix isinstance check

* Remove invalid test

* Add -libdevice to set custom path [skip ci]

* Add release notes; bump version [skip ci]

* Add libdevice docs [skip ci]

Co-authored-by: Ibrahim Numanagić <ibrahimpasa@gmail.com>
2022-09-15 15:40:00 -04:00
Ibrahim Numanagić b1bc1b79d7 Fix tests 2022-08-04 09:53:26 -07:00
Ibrahim Numanagić 48a2bfa57a
Add Cython fixes (decorator arguments, pyvars support) (#42)
* Add Cython fixes (decorator arguments, pyvars support)

* Update CI and README

* Fix problematic test

* Don't track Cython-generated cpp file [ci skip]

* Fix test

* Various codon.jit improvements

* clang-format [ci skip]

* Add docs [ci skip]

* Add docs link

Co-authored-by: A. R. Shajii <ars@ars.me>
2022-08-03 16:36:03 -04:00