All notable changes to this project will be documented in this file.
- #32 : Add support for
nvccCompiler andcudalanguage as a possible option. - #48 : Fix incorrect handling of imports in
cuda. - #59 : Updated
cudaclash checker. - #42 : Add support for custom kernel in
cuda. - #42 : Add Cuda module to Pyccel. Add support for
cuda.synchronizefunction. - #41 : Add support for custom device in
cuda.
- #1881 : Add Python support for dict method
copy(). - #1880 : Add Python support for dict method
clear(). - #1720 : Add support for
Ellipsisas the only index for an array. - #1787 : Ensure STC is installed with Pyccel.
- #1656 : Ensure gFTL is installed with Pyccel.
- #1694 : Add Python support for list method
extend(). - #1700 : Add Python support for list method
sort(). - #1696 : Add Python support for list method
copy(). - #1693 : Add Python support for list method
remove(). - #1893 : Add Python support for set initialisation with
set(). - #1895 : Add Python support for dict initialisation with
{}. - #1895 : Add Python support for dict initialisation with
dict(). - #1886 : Add Python support for dict method
pop(). - #1887 : Add Python support for dict method
popitem(). - #1888 : Add Python support for dict method
setdefault(). - #1885 : Add Python support for dict method
get(). - #1844 : Add line numbers and code to errors from built-in function calls.
- #1655 : Add the appropriate C language equivalent for declaring a Python
listcontainer using the STC library. - #1659 : Add the appropriate C language equivalent for declaring a Python
setcontainer using the STC library. - #1944 : Add the appropriate C language equivalent for declaring a Python
dictcontainer using the STC library. - #1657 : Add the appropriate Fortran language equivalent for declaring a Python
listcontainer using the gFTL library. - #1658 : Add the appropriate Fortran language equivalent for declaring a Python
setcontainer using the gFTL library. - #1944 : Add the appropriate Fortran language equivalent for declaring a Python
dictcontainer using the gFTL library. - #2009 : Add support for
inoperator forlist,set,dictand class containers. - #1874 : Add C and Fortran support for the
len()function for thelistcontainer. - #1875 : Add C and Fortran support for the
len()function for thesetcontainer. - #1908 : Add C and Fortran support for the
len()function for thedictcontainer. - #1665 : Add C and Fortran support for returning lists from functions.
- #1689 : Add C and Fortran support for list method
append(). - #1876 : Add C support for indexing lists.
- #1690 : Add C and Fortran support for list method
pop(). - #1663 : Add C support for sets as arguments.
- #1664 : Add C and Fortran support for returning sets from functions.
- #2023 : Add support for iterating over a
set. - #1877 : Add C and Fortran Support for set method
pop(). - #1917 : Add C and Fortran support for set method
add(). - #1918 : Add support for set method
clear(). - #1918 : Add support for set method
copy(). - #1743 : Add support for set method
discard(). - #1750 : Add support for set method
remove(). - #1753 : Add support for set method
union(). - #1754 : Add support for set method
update(). - #1744 : Add support for set method
intersection(). - #1745 : Add support for set method
intersection_update(). - #1884 : Add support for dict method
items(). - #1936 : Add missing C output for inline decorator example in documentation
- #1937 : Optimise
pyccel.ast.basic.PyccelAstNode.substitutemethod. - #1544 : Add support for
typing.TypeAlias. - #1583 : Allow inhomogeneous tuples in classes.
- #738 : Add support for homogeneous tuples with scalar elements as arguments.
- Add a warning about containers in lists.
- #2016 : Add support for translating arithmetic magic methods.
- #2106 : Add support for
__len__magic method. - #1980 : Extend The C support for min and max to more than two variables
- #2081 : Add support for multi operator expressions
- #2061 : Add C support for string declarations.
- Add support for inhomogeneous tuple annotations.
- #1834 : Add support for
@propertydecorator. - #2099 : Fix translation of modules containing
__all__. - #983 : Add support for built-in function
round. - Add support for
typeas a type annotation. - [INTERNALS] Add abstract class
SetMethodto handle calls to various set methods. - [INTERNALS] Added
container_rankproperty toast.datatypes.PyccelTypeobjects. - [INTERNALS] Add a
__call__method toFunctionDefto createFunctionCallinstances. - [INTERNALS] Allow the use of magic methods to describe container methods.
- [DEVELOPER] Added an improved traceback to the developer-mode errors for errors in function calls.
- #2025 : Optimise min/max to avoid unnecessary temporary variables.
- #1720 : Fix Undefined Variable error when the function definition is after the variable declaration.
- #1763 Use
np.result_typeto avoid mistakes in non-trivial NumPy type promotion rules. - Fix some cases where a Python built-in type is returned in place of a NumPy type.
- Stop printing numbers with more decimal digits than their precision.
- Allow printing the result of a function returning multiple objects of different types.
- #1732 : Fix multidimensional list indexing in Python.
- #1785 : Add missing cast when creating an array of booleans from non-boolean values.
- #1821 : Ensure an error is raised when creating an ambiguous interface.
- #1842 : Fix homogeneous tuples incorrectly identified as inhomogeneous.
- Link and mention
develbranch, notmaster. - #1913 : Fix function calls to renamed functions.
- #1930 : Preserve ordering of import targets.
- #1892 : Fix implementation of list function when an iterable is passed as parameter.
- #1979 : Fix memory leaks in C due to homogeneous container redefinition.
- #1972 : Simplified
printfstatement for Literal String. - #2026 : Fix missing loop in slice assignment.
- #2008 : Ensure list/set/dict assignment is recognised as a reference.
- #2039 : Ensure any expressions in the iterable of a for loop are calculated before the loop.
- #2013 : Stop limiting the length of strings to 128 characters.
- #2078 : Fix translation of classes containing comments.
- #2041 : Include all type extension methods by default.
- #2082 : Allow the use of a list comprehension to initialise an array.
- #2094 : Fix slicing of array allocated in an if block.
- #2085 : Fix calling class methods before they are defined.
- #2111 : Fix declaration of class attributes with name conflicts using type annotations.
- #2115 : Fix integer handling with NumPy 2.0 on Windows.
- Fix handling of union
typing.TypeAliasobjects as type hints. - #2141 : Fix error when removing
test_node
- #1920 : Add a maximum version for NumPy.
- #1836 : Move
epyccelmodule topyccel.commands.epycceland add support for shortcut importfrom pyccel import epyccel. - #1720 : functions with the
@inlinedecorator are no longer exposed to Python in the shared library. - #1720 : Error raised when incompatible arguments are passed to an
inlinedfunction is now fatal. - #1964 : Improve the error message when the wrong type is passed as a NumPy array argument.
- #1941 : Rename "target" in
AsNametolocal_aliasto better illustrate its use in the local context. - [INTERNALS]
FunctionDefis annotated when it is called, or at the end of theCodeBlockif it is never called. - [INTERNALS]
InlinedFunctionDefis only annotated if it is called. - [INTERNALS] Build
utilities.metaclasses.ArgumentSingletonon the fly to ensure correct docstrings. - [INTERNALS] Rewrite datatyping system. See #1722.
- [INTERNALS] Moved precision from
ast.basic.TypedAstNodeto an internal property ofast.datatypes.FixedSizeNumericTypeobjects. - [INTERNALS] Moved rank from
ast.basic.TypedAstNodeto an internal property ofast.datatypes.PyccelTypeobjects. - [INTERNALS] Moved order from
ast.basic.TypedAstNodeto an internal property ofast.datatypes.PyccelTypeobjects. - [INTERNALS] Use cached
__add__method to determine result type of arithmetic operations. - [INTERNALS] Use cached
__and__method to determine result type of bitwise comparison operations. - [INTERNALS] Stop storing
FunctionDef,ClassDef, andImportobjects insideCodeBlocks. - [INTERNALS] Remove the
orderargument from thepyccel.ast.core.Allocateconstructor. - [INTERNALS] Remove
rankandorderarguments frompyccel.ast.variable.Variableconstructor. - [INTERNALS] Ensure
SemanticParser.infer_typereturns all documented information. - [INTERNALS] Enforce correct value for
pyccel_stagingproperty ofPyccelAstNode. - [INTERNALS] Allow visiting objects containing both syntactic and semantic elements in
SemanticParser. - [INTERNALS] Rename
pyccel.ast.internals.PyccelInternalFunctiontopyccel.ast.internals.PyccelFunction. - [INTERNALS] All internal classes which can be generated from
FunctionCalls must inherit fromPyccelFunction. - [INTERNALS]
PyccelFunctionobjects which do not represent objects in memory have the typeSymbolicType. - [INTERNALS] Rename
_visitfunctions called from aFunctionCallwhich don't match the documented naming pattern to_buildfunctions. - [INTERNALS] Remove unnecessary argument
kindtoErrors.set_target. - [INTERNALS] Handle STC imports with Pyccel objects.
- [INTERNALS] Stop using ndarrays as an intermediate step to call Fortran code.
- [INTERNALS] Stop using ndarrays as an intermediate step to return arrays from Fortran code.
- [INTERNALS] Unify the strategy for handling additional imports in the printing stage for different languages.
- [INTERNALS] Make
Iterableinto a super-class instead of a storage class. - [INTERNALS] Change the order of the constructor arguments of
FunctionDef.
- #1786 : Remove support for
realandintegeras type annotations. - #1812 : Stop allowing multiple main blocks inside a module.
- [INTERNALS] Remove property
ast.basic.TypedAstNode.precision. - [INTERNALS] Remove class
ast.datatypes.DataType(replaced byast.datatypes.PrimitiveTypeandast.datatypes.PyccelType). - [INTERNALS] Remove unused properties
prefixandaliasfromCustomDataType. - [INTERNALS] Remove
ast.basic.TypedAstNode._dtype. The datatype can still be accessed as it is contained within the class type. - [INTERNALS] Remove unused parameters
expr,statusandlikefrompyccel.ast.core.Assign. - [INTERNALS] Remove
pyccel.ast.utilities.builtin_functions. - [INTERNALS] Remove unused/unnecessary functions in
pyccel.parser.utilities:read_file,header_statement,accelerator_statement,get_module_name,view_tree. - [INTERNALS] Remove unused functions
Errors.unset_target, andErrors.reset_target. - [INTERNALS] Remove unused classes
SymbolicAssignandSymbolicPrint.
- #1915 : Add support for NumPy v2
signfunction. - #1988 : Add support for NumPy v2 (fix
floor, fix type mixing, update tests).
- #1853 : Fix translation of a file whose name conflicts with Fortran keywords.
- #1047 : Print the value of an unrecognised constant.
- #1951 : Fix return type for class whose argument cannot be wrapped.
- #1903 : Fix memory leak when using type annotations on local variables.
- #1927 : Improve error Message for missing target language compiler in Pyccel
- #1933 : Improve code printing speed.
- #1924 : Fix internal error arising in Duplicate or list comprehensions.
- #1970 : Fix missing
TypeErrorfor wrong type passed as optional argument. - #1985 : Fix implementation of
gcdandlcmfor C and Fortran. - #1998 : Fix compiler error when using a variable named
I.
- #1830 : Add a
pyccel.lambdifyfunction to accelerate SymPy expressions. - #1867 : Add a
use_outparameter topyccel.lambdifyto avoid unnecessary memory allocation. - #1867 : Auto-generate a docstring for functions generated via calls to
pyccel.lambdify. - #1868 : Hide traceback for
epyccelandlambdifyerrors.
- #1762 : Fix array copy between different data types.
- #1792 : Fix array unpacking.
- #1795 : Fix bug when returning slices in C.
- #1218 : Fix bug when assigning an array to a slice in Fortran.
- #1830 : Fix missing allocation when returning an annotated array expression.
- #1853 : Fix translation of a file whose name conflicts with Fortran keywords.
- Link and mention
develbranch, notmaster.
- #1866 : Raise a more informative error when mixing scalar and array return types.
- [TESTS] Filter out cast warnings in cast tests.
- [INTERNALS] Removed unused
fcode,ccode,cwrappercode,luacode, andpycodefunctions from printers. - [INTERNALS] Removed unused arguments from methods in
pyccel.codegen.codegen.Codegen.
- #1820 : Deprecated unused decorator
@lambdify - [INTERNALS] Removed unused and undocumented function
get_function_from_ast. - [INTERNALS] Remove function
Module.set_name. - [INTERNALS] Remove unused
assign_toargument ofCodePrinter.doprint. - [INTERNALS] Remove unnecessary functions from
CodePrinter:_get_statement,_get_comment.
- #1689 : Add Python support for list method
append(). - #1692 : Add Python support for list method
insert(). - #1690 : Add Python support for list method
pop(). - #1691 : Add Python support for list method
clear(). - #1575 : Add support for homogeneous tuple type annotations on variables.
- #1425 : Add support for
numpy.isnan,numpy.isinfandnumpy.isfinite. - #1738 : Add Python support for creating scalar sets with
{}. - #1738 : Add Python support for set method
add. - #1749 : Add Python support for set method
pop().
- #1575 : Fixed inhomogeneous tuple (due to incompatible sizes) being treated as homogeneous tuple.
- #1182 : Fix tuples containing objects with different ranks.
- #1575 : Fix duplication operator for non-homogeneous tuples with a non-literal but constant multiplier.
- #1779 : Fix standalone partial templates.
- #1776 : Increase minimum version for
pytestto 7.0.
- [INTERNALS] Remove unnecessary
dtypeparameter fromast.core.Declareclass. - [INTERNALS] Remove unnecessary
passed_from_dottedparameter fromast.core.Declareclass. - [INTERNALS] Remove unused
ast.core.Blockclass.
- #1724 : Fix returns in for loops
- #1645 : Handle deprecated
astclasses. - #1649 : Add support for
np.minin C code. - #1621 : Add support for
np.maxin C code. - #1571 : Add support for the function
tuple. - #1493 : Add preliminary support for importing classes.
- #1578 : Allow classes to avoid type annotations for the self argument of a method.
- #1597 : Handle class docstrings.
- #1494 : Add support for functions returning class instances.
- #1495 : Add support for functions with class instance arguments.
- #1684 : Add support for classes without
__init__functions. - #1685 : Add support for
type()function with class instance argument. - #1605 : Add support for methods and interfaces in classes (including
__init__and__del__). - #1618 : Add support for class instance attributes.
- #1680 : Add support for
typing.Final. - Add a
--time_executionflag to allow detailed investigation of critical sections of code. - #1659 : Add multi-file support for classes.
- #1708 : Allow returning pointers to arguments from functions.
- [INTERNALS] Add
class_typeattribute toTypedAstNode. - [INTERNALS] Add
PyccelPyArrayObjectdatatype.
- #1587 : Fix unnecessarily long file names generated by
epyccel. - #1576 : Correct destructor invocation for proper cleanup.
- #1576 : Remove inline class method definition.
- Ensure an error is raised when if conditions are used in comprehension statements.
- #1553 : Fix
np.signwhen using theifortcompiler. - #1582 : Allow homogeneous tuples in classes.
- #1619 : Give priority to imported functions over builtin functions.
- #1614 : Allow relative paths for custom compilation file.
- #1615 : Fixed infinite loop when passing slices while copying arrays.
- #1628 : Fixed segmentation fault when writing to optional scalars.
- #1554 : Fix exit statement in Fortran with Intel compiler.
- #1564 : Fixed installation problems on Python 3.12.
- #1259 : Fix bug causing problems with user editable installation.
- #1651 : Fix name collision resolution to include parent scopes.
- #1156 : Raise an error for variable name collisions with non-variable objects.
- #1507 : Fix problems with name collisions in class functions.
- Ensure
pyccel-initcalls the related function. - Stop unnecessarily importing deprecated NumPy classes
int,bool,float,complexin Python translation. - #1712 : Fix library path and OpenMP support for recent Apple chips by getting Homebrew directory with
brew --prefix. - #1687 : Pointers in tuples are deallocated.
- #1586 : Raise an error for targets of class instances which go out of scope too early.
- #1717 : Fix a bug when handling paths with dots.
- #1672 : Make
icxandifxthe default Intel compilers (Found in Intel oneAPI). - #1644 : Stop printing the step of a range if that step is 1.
- #1638 : Migrate from
setuptoolstohatchfor installation scripts. - Don't raise a warning for an unnecessary specification of the order.
- [INTERNALS] #1593 : Rename
PyccelAstNode.fstto thePyccelAstNode.ast. - [INTERNALS] #1593 : Use a setter instead of a method to update
PyccelAstNode.ast. - [INTERNALS] #1593 : Rename
BasicParser._current_fst_nodeto theBasicParser._current_ast_node. - [INTERNALS] #1390 : Remove dead code handling a
CodeBlockin an assignment. - [INTERNALS] #1582 : Remove the
HomogeneousTupleVariabletype. - [INTERNALS] #1581 : Unify handling of string and Python annotations.
- #1593 : Remove undocumented, broken
lambdifymethod. - [INTERNALS] #1584 : Remove unused functions from
pyccel.ast.core:inline,subs,get_iterable_ranges. - [INTERNALS] #1584 : Remove unused functions from
pyccel.ast.datatypes:is_iterable_datatype,is_with_construct_datatype,is_pyccel_datatype. - [INTERNALS] #1584 : Remove unused class from
pyccel.ast.core:ForIterator. - [INTERNALS] #1584 : Remove unused method from
pyccel.ast.core:ClassDef.get_attribute. - [INTERNALS] #1676 : Remove
DottedFunctionCallfrompyccel.ast.core(usebound_argumentinstead). - [INTERNALS] #1683 : Remove unused redundant class from
pyccel.ast.datatypes:UnionType.
- #633 & #1518 : Allow non-trivial types to be specified with mypy-compatible annotations.
- #1336 : Use template as a partial type.
- #1509 : Add type annotations for variables.
- #1528 : Add support for variable declarations in classes.
- #1491 : Add documentation for classes.
- #387 : Raise a clear error when an unrecognised type is used in a type annotation.
- #1556 : Fixed print format string for Intel compatibility.
- #1557 : Fix return a new instance of a class.
- #1557 : Fix save multiple class instances to the same variable.
- [INTERNALS] #1520 :
ScopedNode->ScopedAstNode. - [INTERNALS] #1520 :
PyccelAstNode->TypedAstNode. - [INTERNALS] #1520 :
Basic->PyccelAstNode.
- Drop official support for Python 3.7 due to End of Life.
- #1476 : Add C support for a class containing
Interfaces. - #1472 : Add C printing support for a class containing scalar data.
- #1492 : Types of arguments for class methods can be declared like function arguments.
- #1511 : Add support for the
cmathlibrary. - Output readable header syntax errors.
- New environment variable
PYCCEL_DEFAULT_COMPILER. - #1508 : Add C support for a class destructor.
- #1508 : Add support for array data in classes.
- #1484 : Use scope for classes to avoid name clashes.
- Stop raising warning for unrecognised functions imported via intermediate modules.
- #1156 : Raise a neat error for unhandled inhomogeneous tuple expressions.
- Set status of header variables to 'unallocated'.
- #1508 : Generate deallocations for classes and their attributes.
- #1484 : Improve handling of
DottedNamein_assign_lhs_variable. - [INTERNALS] Move handling of variable headers to semantic stage.
- [INTERNALS] Moved handling of type annotations to the semantic stage.
- [INTERNALS] Remove unnecessary body argument from
FunctionAddress.
- #1513 : Stop printing
@typesdecorators in generated Python code. - Remove support for undocumented type syntax specifying precision (e.g.
int*8). - No longer possible to combine header annotations and argument type annotations.
- Remove support for specifying header annotations in a separate file.
- [INTERNALS] Remove
dtype_registryin favour ofdtype_and_precision_registry. - [INTERNALS] Prefer
DataTypekeys over string keys which describe data types.
- #1497 : Add support for NumPy
copymethod:a.copy. - #1497 : Add support for NumPy function
copy.
- #1499 : Fix passing temporary arrays to functions.
- #1241 : Missing transpose when converting from a C-ordered array to F-ordered array.
- #1241 : Incorrect transpose when copying an F-ordered array.
- #1241 : Fix infinite loop when passing an array as the only argument to
np.array. - #1506 : Increment
Py_Nonereference count to avoid unexpected deallocation.
- #752 : Allow passing array variables to
numpy.array. - #1280 : Allow copying arrays using
numpy.array. - Allow interfaces in classes.
- Add Python support for a simple class.
- #1430 : Add conjugate support to booleans.
- #1452 : Add C printing support for a class containing only functions.
- #1260 : Add support for NumPy
dtypeproperty:a.dtype. - #1260 : Add support for NumPy
result_typefunction.
- #682 : Wrong data layout when copying a slice of an array.
- #1453 : Fix error-level developer mode output.
- [INTERNALS] Fix string base class selection.
- #1496 : Fix interfaces which differ only by order or rank.
- #1455 : Make
ConstructorCallinherit fromFunctionCall. - Updating
stdlibfiles if they are modified not just accessed. pyccel_cleantool now deletes folders starting with__pyccel__and__epyccel__.- Pyccel-generated folder names are dependent on
PYTEST_XDIST_WORKERwhen running withpytest-xdist. - [INTERNALS] Add class object to class function call arguments.
- [INTERNALS] In
ast.numpyextrenameShapeasNumpyShape,NumpyArraySizeasNumpySize - [INTERNALS] In
ast.internalsrenamePyccelArraySizeasPyccelArraySizeElement, create newPyccelArraySizew/outindexargument - [INTERNALS] Make
NumpySizea factory class (which cannot be instantiated) - [INTERNALS] Re-write C-Python API wrapping stage (#1477)
- Using a
@typesdecorator will raise aFutureWarningas this will be deprecated in a future version. - Using a type specification header will raise a
FutureWarningas this will be deprecated in a future version. - Stop generating
numpy.bool(deprecated from NumPy) in code. - [INTERNALS] Removed
obsoletefolder. - [INTERNALS] Removed out of date
samplesfolder. - [INTERNALS] Removed out of date
docfolder. - [INTERNALS] Removed
benchmarksfolder. Code is still available in benchmark repository. - [INTERNALS] Removed
bugsfolder. - [INTERNALS] Removed
inprogressfolder. - [INTERNALS] Remove old Travis configuration file.
- #1430 : Added conjugate support to integers and floats.
- #1427 : Fix augmented assignment with a literal right hand side in templated code.
- #1400 : Added flags to Pyccel for managing conda PATH warnings.
- #1404 : Bug preventing printing of some functions in a
print()call. - #1302 : Raise error message in case of empty class.
- #1407 : Raise an error if file name matches a Python built-in module.
- #929 : Allow optional variables when compiling with Intel or NVIDIA.
- #1117 : Allow non-contiguous arrays to be passed to Fortran code.
- #1415 : Fix incorrect handling of assignments augmented by function calls.
- #1418 : Fix
itertools.productimplementation.
- #1355 : Remove unused
BasicParserarguments. - [INTERNALS] Re-write bind-c wrapping stage (#1388)
- #1352 : Added a change log.
- #1367 : Use an absolute path to link to Python library.
- #1379 : Ensure temporary arrays created for function calls are correctly declared in loops.
- Default to linking Python dynamically instead of statically
- Ensure only absolute paths are used in compilation command.
- [INTERNALS] Use
FunctionDefArgumentto store all argument specific properties. - [INTERNALS] Reduce carbon footprint by avoiding unnecessary CI testing.
- [INTERNALS] Automatise PR labelling and review progress prompts.
- [INTERNALS] Enforce the use of
FunctionDefArgumentinFunctionDef. - [INTERNALS] Use
FunctionDefResultto store all result specific properties.
- Improved developer docs (code generation stage).
- #1337 : Bug causing overflow errors when templates are used in functions with a large number of arguments.
- #892 : Bug in the wrapper preventing an argument from using templates to have both a scalar and an array type.
- [INTERNALS] Add validation of docstrings to CI.
- #1288 : Bug in slice indexing in C code.
- #1318 : Bug preventing use of
np.linspacemore than once in a given function.
- [INTERNALS] Uniformise line endings and enforce the convention through the use of a
.gitattributesfile. - [INTERNALS] Add human-readable summaries to tests.
- [INTERNALS] Add tests to ensure Pyccel conventions are followed.
- [INTERNALS] Add tests to check spelling.
- #1309 : Support for
np.sumin C code. - Improved developer docs (ordering, syntactic stage, semantic stage).
- Added community guidelines.
- #1184 : Bug preventing compilation on systems where there is no static library available for Python.
- #1281 : Bug causing assignment to pointer instead of incrementation.
- #1282 : Imported constants cannot be returned from functions.
- [INTERNALS] Bug in CI coverage for forks.
- #1315 : Installation process modified to make test requirements a pip optional dependency.
- #1245 : Reduce false negative test results by using a tolerance to compare floats.
- #1272 : Remove use of deprecated NumPy syntax in tests.
- #1253 : Provide minimum requirements.
- [INTERNALS] #1385 : Remove unused settings keyword arguments from
_visitfunction.