Psyclone

Latest version: v3.1.0

Safety actively analyzes 714973 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 6

2.1.0

Not secure
1) PR 1183 for 1075. Improves (tightens) the checking performed
by the LoopFusion transformation.

2) PR 1197 for 1189. Changes the dependence analysis to use a
Signature rather than just the symbol name (in preparation for
supporting derived types/structures).

3) PR 1216 for 1188. Adds a FortranReader PSyIR frontend.

4) PR 1217 towards 1210. Adds raising transformations for NEMO.

5) PR 1222 for 1171. Adds a new class to encapsulate all constants
related to the LFRic API.

6) PR 1233 for 1231. Adds psyadd driver script that will process an
LFRic tangent-linear kernel and produce its adjoint.

7) PR 1124 for 1185. Refactor PSyDataNode class and sub-classes.

8) PR 1229 for 1170. Adds a Container parent node above all
InvokeSchedule nodes.

9) PR 1225 towards 1223. Moves remaining GOcean constants into
new GOceanConstants class.

10) PR 1241 for 1240. Adds support for functions in the PSyIR and
Fortran frontend and backend.

11) PR 1257 for 1248. Adds support for logical, read-only, scalar
arguments to LFRic user-supplied kernels.

12) PR 1234 for 1230. Adds FileContainer node.

13) PR 1264 towards 1258. Adds mappings for the LFRic infrastructure
types to their Fortran modules to the LFRic Constants class.

14) PR 1236 for 1028. Extends the core variable-access analysis
functionality to support structures (derived types).

15) PR 1239 towards 1237. Adds lower_to_language_level() method
for some LFRic builtins.

16) PR 1195 for 1194. Fixes some incorrect str(error) usage in the
tests, introduces a PSycloneError base class and adds tests to make
sure that it is used. Also adds tests to ensure that future accidental
use of str(error) will cause a failure.

17) 1243 for 1242. Bug fix for OpenCL code generation - ensures
synchronisation calls are added where necessary if kernels are running
on different command queues.

18) 1273 for 1272. Fixes missing fparser initialisation when
GOcean loop bounds are read from config file.

19) 1287 towards 1259. Rename TypeSymbol to DataTypeSymbol.

20) 1265 for 1260. Fixes various bugs to better support PSyIR
code generation. Includes function return values and string
storage in PSyIR.

21) 1293 for 1178, 1179, 1285. Update installation instructions
to include autoapi and tex-gyre, and added allclean target to
reference guide to clean up all automatically created files.

22) 1278 for 1271. Updates dependency tools to use Signatures.

23) 1286 for 1274. Updates the Visitors so that they perform
any necessary lowering and do so on a *copy* of the PSyIR tree
so that there are no side effects.

24) 1290 for 2183. Adds support for != and other comparison
operators to the Signature class.

25) 1262 for 920. Adds capturing of algorithm-layer datatypes
which are then stored in the algorithm.py Arg class.

26) 1252 for 1251. Fix Ranges inside StructureType accesses.

27) 1294 towards 1259. Add the TypedSymbol abstract class.

28) 1311 for 1303. Fortran frontend do not merge CodeBlocks
when these are not full statements.

29) 1212 towards 1010. Updates the gocean1.0 API so that the PSy-layer
generation uses the PSyIR Fortran backend. (N.B. the OpenCL generation
still uses the f2pygen mechanism for the moment.)

30) 1316 for 1301 and 1304. The Fortran frontend handles labelled
and named constructs.

31) 1299 for 1249. Some LFRic built-ins use the PSyIR backend, which
fixes a unary operator precedence bug.

32) 1279 for 1250. Adds capability to specify multiple kernel
directories.

33) 1329 for 1308. Fix bug in the Fortran frontend WHERE clause.

34) PR 1327 towards 1208. Moves the implementations of the various
Directive nodes out of psyGen.py and into psyir/nodes.

35) 1255 for 1253. Improve the parsing of Fortran specification
code and includes support for Fortran interface blocks.

36) 1319 for 1307. Add support for lower bounds in PSyIR ArrayType.

37) 1261 towards 1277. Gather more information in LFRicConstants
so values are not hardcoded in multiple locations. Includes adding
precision information derived from LFRic rules which is required
for mixed precision support.

38) PR 1317 for 1315. Fixes bug in dependence analysis caused by
introduction of FileContainer root node.

39) PR 1340 for 1334. Add support for symbols in
'psyir_from_expression()' and fix code generation bug for LFRic
"power" built-ins with literal constants that have explicit precision.

40) PR 1323 for 1305. Capture the default visibility of a Fortran
module and store it in the symbol table.

41) PR 1313 for 1268 and 1269. Adds new ComponentIndices class
to manage indices for component accesses.

42) PR 1325 for 1247. Adds PSyIR support for comments (associated with
Container, Routine and Statement nodes).

43) PR 1342 towards 1338. Adds the OMPSingleTrans transformation for
creating an OMP SINGLE region.

44) PR 1352 towards 1338. Adds the OMPMasterTrans transformation for
creating an OMP MASTER region.

45) PR 1360 for 1359. Fix pytest fixtures tear downs.

46) PR 1353 for 1324. Add support for generating structure accesses in
the C backends.

47) PR 1358 towards 1338. Add the OpenMP Taskloop directive and its
corresponding insertion transformation.

48) PR 1369 for 1367. GOcean supports REAL literals in kernel arguments.

49) PR 1362 for 1361. Fix bug in PSyIRGen when PSyIR node corresponds
to more than one fparser2 node.

50) PR 1344 for 1309. Fix bug in PSyIR backend name comparison.

51) PR 1372 for 1371. Bring tutorial notebooks up-to-date and add
them to the CI.

52) PR 1341 towards 1134. Move OpenCL transformation to GOcean
transformations folder and rename.

53) PR 1368 towards 1338. Adds OMPTaskWaitDirective node.

54) PR 1282 for 871. Adds generation of callback routines for
GOcean in order to do data movement with OpenACC.

55) PR 1267 for 1232. Adds a TL to Adjoint transformation for
assignments.

56) PR 1263 for 1139. Adds a transformation that converts an
array access into a single-trip loop.

57) PR 1378 for 879. Renames the Symbol interface GlobalInterface
to ImportInterface.

58) PR 1376 for 1374. Create intermediate RegionDirective and
StandaloneDirective PSyIR node classes.

59) PR 1380 for 1375. Add the LazyString utility to prevent generating
costly error messages when these are not used.

60) PR 1354 for 1256. Change GOConstLoopBoundsTrans to modify the
tree rather than just setting a flag.

61) PR 1343 for 1336. Use github actions to verify all links in
all markdown files.

62) PR 1385 towards 430 and 737. Improve accessibility attribute support
on the PSyIR Fortran frontend and backend.

63) PR 1363 for 1356. Adds a hoist transformation for assignments.

64) PR 1330 for 1297. Adds TL to Adjoint test harness code
generation.

65) PR 1379 towards 1288. Alters the driver generation for
GOcean kernel extraction to use the PSyIR.

66) PR 1403. Adds support for private clause for declarations in f2pygen.

67) PR 1406 for 1404. Temporary copy() bug fix while the loop variable
is not part of the PSyIR tree.

68) PR 1407 towards 1383. Standardises the node_str() method of
DirectiveNode and remove un-needed code.

69) PR 1401 for 1400. Extend psyad script to allow list of active
variables to be specified.

70) PR 1326 for 1292. Add support for GH_READINC access for continuous
fields in the LFRic API.

71) PR 1409 for 1383. Standardises and cleans-up dag_name() methods
and pins jsonschema to version 3.0.2 to fix jupyter notebooks with
older versions of Python.

72) PR 1147 for 430, 435 and 616. The NEMO API now uses the PSyIR
backend to generate output code.

73) PR 1395 for 1100. Replaces the first two LFRic examples with new
ones that use the 'dynamo0.3'/'lfric' domain instead of 'dynamo0.1'.
This is a step towards removing the 'dynamo0.1' domain.

74) PR 1397 for 1390. Add support for unary minus in SIR backend.

75) PR 1413 towards 1134. Moves the generation of some OpenCL
support routines from the generation stage to the transformation
stage.

76) PR 1420 for 1113. Completes the symbol-specialisation
functionality by adding support for attributes.

77) PR 1435 for 1425. Adds LFRic BuiltIns for subtraction of
field elements from a scalar.

78) PR 1412 for 1411. Adds visitor to PSyAD script and have it
call assignment transformation.

79) PR 1433 for 1378. Adds dependence checks to the hoist
transformation.

80) PR 1450 for 1291. Adds new dependence-analysis chapter to UG to
bring together documentation on 'old' and 'new' way of doing things.

81) PR 1436 for 1434. Adds new Max2Code transformation.

82) PR 1427 for 1405. Adds new PSyIR nodes for OMPTarget and
OMPLoop directives.

83) PR 1466 for 1465. Update SIR backend so that generated code
specifies cartesian grid (to match latest Dawn API).

84) PR 1469 for 1468. Update deprecated 'operatorPrecedence' to
'infixNotation' in 'src/psyclone/expression.py' for compatibility
with the pyparsing 3.01 update in GitHub.

85) PR 1455 for 1441. Extends PSyAD to cope with kernels
containing multiple assignment statements.

86) PR 1432 for 1168. Adds PSyIR lowering support for generic
PSyData nodes.

87) PR 1415 towards 1338. Adds the OMPTaskwaitTrans transformation
that resolves dependencies between task loops.

88) PR 1460 for 1454. Fix code generation to pass the number of
cells up to the last edge cell instead of the halo cells to the
'domain' kernels in the LFRic API.

89) PR 1438 towards 1134. Moves the creation of the OpenCL
set_args routines into the transformation.

90) PR 1480 for 1479 Makes PSyclone use the release version of
fparser (0.0.13) from pypi on installation (towards making a new
PSyclone release).

2.0.0

Not secure
1) 778 for 713. Use 'make' to execute all examples.

2) 782 for 780. Refactor FunctionSpace support and move it
out of dynamo0p3.py and into the lfric domain.

3) 785 for 679. Use a DataSymbol to represent the PSyIR Loop variable.

4) 795 for 793. Add the scope property to PSyIR node.

5) 779 for 763. Capture unrecognised declarations in a new
PSyIR UnknownType DataType.

6) 787 for 786. Introduce the PSyIR Call node and the RoutineSymbol.

7) 784 for 764. Update LFRic test kernels to use fs_continuity_mod.

8) 797 for 790. Add intrinsic type information to GOcean grid
properties in config file. Add OpenCL to GOcean/eg1 ('shallow').

9) 792 for 789. Return kernel argument objects instead of just names
from unique_declarations() and unique_declarations_by_intent().

10) 750 for 575. Add support for jupyter notebooks with links to
binder for some examples.

11) 804 for 801. Correct Fortran intents for invoke arguments in
unique_declns_by_intent().

12) 794 for 788. Re-structuring and tidying of DynArgDescriptor03
to become LFRicArgDescriptor.

13) 807 for 805. Put fparser2 bare DO constructs inside CodeBlocks.

14) 816 for 810 (fix GOcean examples to build dl_esm_inf if
required) and 730 (bring GOcean/eg5 up-to-date with latest dl_timer).

15) 811 for 783. Removes potential duplication of orientation
pointer declarations.

16) 808 for 800. Adds support in the PSyIR for the case when a
variable used to dimension an array has deferred or unknown type.

17) 822 for 820. Excludes return statements from profile and
directive regions. Also reworks the relevant code to exclude nodes
rather than include them which makes more sense as exclusion is
the exception.

18) 796 for 412. Adds a transformation to convert an assignment
to an array range into an explicit loop in the PSyIR.

19) 834 for 833. Adds the NINT intrinsic to the PSyIR and adds
support in fparser2reader for translating Fortran NINT into this
intrinsic.

20) 821 for 630. Extends symbol table functionality to allow
search of ancestor symbol tables.

21) 837 for 824. Introduce profile_PSyDataStart() and
profile_PSyDataStop() functions for NVTX profiling on NVIDIA.

22) 818 for 138. Modifies PSyclone tests which use GH_WRITE for
continuous fields when iterating over cells (as this is not
valid).

23) 842 for 841. Fixes gocean/eg1 so that PSYCLONE_CONFIG is
set correctly (and adds a .gitignore).

24) 825 for 646. Extends the dependency analysis so that it
works for all 'implicit' arguments passed to LFRic kernels.

25) 799 for 757. Extends kernel metadata such that multiple
implementations (in different precisions) of a single kernel
may now be specified through an interface block.

26) 854 for 848. Adds a tutorial in the form of Jupyter
notebooks. Covers fparser2, the NEMO API and PSyIR navigation.

27) 839 for 836. Improves the separation between the metadata
parsing and type information in the LFRic API.

28) 862 for 860. Fixes error when building documentation using
windows filesystems (removes symbolic links).

29) 812 towards 199. Adds PSyclone support for read-only
verification for LFRic and GOcean.

30) 829 for 827. Removes the NemoImplicitLoop node and the
associated NemoExplicitLoopTrans (now that the PSyIR has support
for assignments to array ranges).

31) 844 for 809. Improves PSyclone linelength support by
allowing linelength checks to be applied to modified or generated
code but not input code. The various options can be controlled by
command line switches.

32) 882 for 881. Removes specific version of pylint in setup.py.

33) 884 for 883. Restructure psyclone user guide to move
psyclone command section nearer the front of the document.

34) 823 for 471. Updates the access from INC to READWRITE for
those kernels that loop over DoFs.

35) 872 for 736 and 858. Routine Symbols are captured by the Fortran
front-end when parsing a Container.

36) 850 for 849 - basic support for distributed memory in GOcean.
N.B. dl_esm_inf does not yet have support for set_dirty/clean.

37) 875 for 774. Add support for new metadata format for scalar
arguments to LFRic kernels - sepecify the intrinsic type
separately.

38) 895 towards 871. Updates to HEAD of dl_esm_inf, introduces
FortCL as a submodule and alters the OpenCL code generation for gocean
in order to create a read_from_device function.

39) 865 for 832. Use Jinja to generate Fortran code for the
PSyData read-only verification library plus the dl_esm_inf
implementation of this.

40) 893 towards 866. Introduce support for "operates_on" instead of
"iterates_over" in LFRic kernel metadata.

41) 887 for 876. Create a generic symbol when no better information is
provided about a symbol and replace the symbol later on if more
information is found.

42) 904 for 903. Fixed an error in handling use statements (a
symbol clash when there should not be one).

43) 877 for 867. Bug fix to enable dependencies on HaloExchange
objects to be ignored while updating the dependency information.

44) 907 for 906. Refactor PSyDataTrans and subclasses to reduce
code duplication (especially in the __str__ and name methods).

45) 902 for 866. Update (virtually) all LFRic test kernels and
examples to use "operates_on" instead of "iterates_over" metadata.

46) 914 for 897. Update Coding Style in Dev guide with details
on raising Exceptions.

47) 878 for 832. Use Jinja and the PSyDataBase class for building
most of the PSyData profiling wrapper libraries.

48) 915 for 908. Alters the module generation for the LFRic PSy
layer so that use statements for LFRic field and operator modules are
only generated if required.

49) 922 for 921. Fixes pycodestyle errors in the code base.

50) 899 for 896. Adds a new PSyIR Routine Node that subclasses
Schedule and is subclassed by KernelSchedule.

51) 932 for 931. Fixes the dependency analysis in the case
that no existing Symbol is found for an array access. This is
a workaround until the NEMO API has a fully-functioning symbol
table enabling the dependency analysis to be based upon Symbol
information (845).

52) 930 for 885. Bug fix for missing halo exchange before a
Builtin Kernel with a field argument with read-write access.

53) 919 for 916. Fixes errors in docstrings which show up when
generating the reference guide.

54) 938 for 937. Correct erroneous use of str(err) instead of
str(err.value) in symboltable_test.py.

55) 940 for 939. Bug fix to ensure utf-8 encoding is set in both
Python 2 and 3 when reading files. (Required when running in
non-Unicode locales.)

56) 942 for 941. Bug fix so that an exception is raised if a
directive is placed around a loop or code region containing a
codeblock.

57) 912 for 781. Adds support for '2D cross' stencils (i.e.
cross stencils where the directions of the arms is encoded
and their lengths may vary).

58) 956 towards 955. Changes the directory structure for
the dl_esm_inf netcdf PSyData wrapper library.

59) 954 for 745. Update PSyclone copy of the LFRic infrastructure
to create compilable and runnable LFRic examples.

60) 943 for 923. Adds generation of an in-kernel boundary mask
when generating OpenCL kernels for GOcean. (Fixes failures seen
for arbitrary problem sizes.)

61) 911 for 363. Add support for derived/structure types.

62) 953 for 952. Make RegionTrans and its subclasses accept a
node as input as well as a list of nodes.

63) PR 965. Add github actions for CI - runs flake8, pytest,
codecov and examples for Python 2.7, 3.5 and 3.8.

64) PR 975 for 972 - correct use of str(err) with str(err.value)
in a couple of recently-added tests.

65) PR 983 for 982 - Improve 'kernels' auto-profiling for NEMO API.

66) PR 977 for 976. Fix dimension parameter for Jinja templates
in the PSyData libraries.

67) PR 981 for 980. Move jupyter notebooks into a notebooks
subfolder of the tutorial directory ready for the addition of
"practicals" tutorials

68) PR 958 for 957. Add checks that raise an exception at code
generation time if there are any orphan OpenACC or OpenMP
directives e.g. OpenMP loop should be within OpenMP parallel.

69) PR 970 for 955. Use Jinja to generate the netcdf extraction
library for the GOcean API.

70) PR 986 for 819. Adds support for NetCDF data extraction
for the LFRic API.

71) PR 964 for 933. Adds nemo practical 'hands-on' tutorial
documentation and examples.

72) PR 905 for 989. Adds PSyData wrapper libraries for dl_esm_inf
and LFRic that provide NAN/infinity checking for real inputs/outputs
to a kernel. Also adds the NanTestNode and a NanTestTrans (which
inserts an instance of the former).

73) PR 961 for 936. Add hands-on tutorial for distributed memory
with the LFRic API.

74) PR 985 for 979. Hands-on tutorial for single-node optimisations
with the LFRic API.

75) PR 962 for 952. Hands-on tutorial for building an LFRic
application.

76) PR 995 for 971. Hands-on tutorial for using PSyData
functionality with the LFRic API.

77) PR 1000 for 988. Add missing dependencies in gungho_lib/Makefile
in LFRic building_code tutorials 3 and 4.

78) PR 1012 for 1001. Adds a wrapper script to find a Python
executable when building any of the PSyData wrapper libraries. (Required
because some distributions now only ship with 'python3').

79) PR 947 for 946. Array shape elements are DataNodes (References,
Literals or expressions). If an int is provided, it is transformed to
a Literal.

80) PR 1020 towards 363. Rename the PSyIR node Array to ArrayReference.

81) PR 1011 for 1008. Auto kernel profiling can fail after OpenMP
transformations.

82) PR 951 for 950. Adds f2pygen support for generating code from
PSyIR nodes.

83) PR 1026 for 1025. Removes code associated with, and
reference to, travis as we have migrated to github actions.

84) PR 944 towards 925. Added metadata support and constraints
tests for operates_on=domain kernels.

85) PR 901 towards 873. Adds PSyIR support for recognised quantities
in LFRic kernels. Currently only used for argument validation.

86) PR 1034 for 1037. Final fixes for problems found when
running with LOCALE=C.

87) PR 974 for 974. Support skip ci with GitHub Actions.

88) PR 1021 towards 363. Add PSyIR nodes for structure references and
its accessors, also the associated Fortran back-end visitors.

89) PR 1036 for 1033. Fix bug in coluring adjacent_face array with
OpenMP in LFRic API.

90) PR 1023 for 1017. Update and improve PSyData LFRic tutorial.

91) PR 894 towards 817. Adds support for LFRic kernel metadata
specifying the intrinsic type (real and integer) of fields and
operators.

92) PR 1029 towards 1010. Sets up initial API and examples for
generating PSy-layer code using the PSyIR backends.

93) PR 1032 for 1019. Adds OpenCL configuration parameters to
enable profiling and out-of-order execution of kernels. Also adds
an 'OpenCL devices per node' configuration option.

94) PR 1044 towards 817. Updates the metadata in LFRic test
kernels to specify the type of field and operator arguments.

95) PR 1038 for 999. Changes to the PSyData wrapper libraries
so that they build with Intel. (Ensures that generic interfaces
to various routines are declared in the correct locations.)

96) PR 1024 for 843. Implements the ArrayRange2LoopTrans for
the NEMO API.

97) PR 1045 towards 817. Updates the LFRic kernel metadata
in the examples to specify the type of field and operator args.

98) PR 1042 for 1039. Adds new method to SymbolTable that
supports the creation of symbols of particular types.

99) PR 1053 towards 363. Add frontend support and semantic navigation
methods for PSyIR structures.

100) PR 1060 (and 1046) for 194. Enables the support for region
stencils in LFRic.

101) PR 1071 for 1069. Modifies the regex used in a couple of
tests in order to reduce run-time.

102) PR 1068 for 1064. Updates to latest fparser and fixes
parsing of invokes now that some kernel calls are identified
as structure constructors instead of array accesses.

103) PR 1051 towards 817. Add field and operator data type
to kernel metadata in the LFRic tutorials.

104) PR 1059 for 960. Removed LFRic support for orientation as
this is not required.

105) PR 1079 for 363. Complete the PSyIR structure support.

106) PR 1070 for 703. Add the ability to rename PSyIR symbols

107) PR 847 for 846. Adds support for the LFRic timer to the
PSyData profiling wrapper.

108) PR 1093 for 1088. Add fparser2reader support for Call statements.

109) PR 1084 for 1080. Introduces the use of PSyIR for GOcean
kernel arguments and loop limits.

110) PR 1052 for 817. Add LFRic field datatype metadata for fields
and operators in remaining test modules.

111) PR 1092 for 1091. Auto-invoke profiling does not include
Return nodes anymore.

112) PR 1087 for 1086. PSyIR Fortran backend for routines merges
symbol tables into single scope.

113) PR 1062 for 1037. Fix LFRic examples and tutorials to
compile and run with the Intel Fortran compiler.

114) PR 1054 for 1047. Adds check that the intrinsic types of
scalar arguments in the LFRic API are consistent. Extends argument-
filtering routines to additionally filter on intrinsic type.

115) PR 1102 towards 1031. Improves PSyIR fparser2 frontend support for
structures types.

116) PR 1111 for 1110. The Call create method is a classmethod.

117) PR 1121 for 1120. Introduce bibtex_bibfiles to Sphinx UG
and DG config files to fix latex build errors in the latest
version of Sphinx which were causing read the docs to fail to
build the documentation.

118) 1058 for 917. Updates the profiling example (gocean/eg5)
so that the appropriate wrapper library is automatically
compiled.

119) PR 1090. Adds support for LFRic builtins that accept integer-
valued fields.

120) PR 1105 for 1104. Adds support for program, module and subroutine
to Fparser2Reader

121) PR 1101 towards 1089. Remove check on arrays dimension symbols.

122) PR 1128 for 1127. Fix Sphinx-RTD builds of user and developer guides.

123) PR 1117 for 1003. Change intent for 'GH_WRITE' arguments from
'in' to 'inout' (because a kernel does not write to all data points in
a field).

124) PR 1063 towards 935. Add basic support for specialisation of
symbols.

125) PR 1073 for 1022. Updates the Makefiles for the examples
and tutorials to make them consistent. Default target for the tutorials
is now 'transform'.

126) PR 1095 for 1083. Adds a LoopTrans base class that Loop
transformations can subclass and use any common functionality.

127) PR 1138 for 1137. Add support for Fortran Program in the PSyIR.

128) PR 1122 for 1112. Restructures the way the colour to use
for a given PSyIR node is specified.

129) PR 1125 for 1114. Harmonises LFRic built-in and module names to
consistently use "LFRic" rather than "Dyn".

130) PR 1065 for 1061. Re-structures the GOcean PSyData examples.

131) PR 1141 for 1132. Small fix to ensure depth() returns correct
values for a GOcean kernel with 'pointwise' access.

132) PR 1096 for 1056. Add GOcean transformations to insert
boundary masks inside kernels and eliminate return statements.

133) PR 1109 for issue 402. Add NEMO processing scripts to the
repository.

134) PR 1135 for issue 1124. Add a replace_with method to PSyIR node.

135) PR 1126 for 1098. Add kernel stub generation support for the
'2D cross' stencils in the LFRic API.

136) PR 1145 for 1107. Adds new LFRic builtins (type-conversion,
SIGN, plus others).

137) PR 1133 for 1130. Uses GOcean stencil metadata to correctly
populate the field access information (dependency analysis) for a
GOcean kernel.

138) PR 1154 for 1153. Work towards improving usability of
loop fusion transformation. Moves transformations into separate
files in the appropriate directories.

139) PR 1155 for 529. Adds PSyIR support for REAL and INT
BinaryOperations.

140) PR 1144 for 1136. Add checks that PSyIR nodes are only children
of one parent.

141) PR 1150 for 1146. Fixed bug in PSyIR, making the name
matching in the Node swap method case insensitive.

142) PR 1166 for 1152. Adds support for the unary sum operator
in the PSyIR and the fparser2psyir reader.

143 PR 1131 for 1116. Make the number of any*space function
spaces (and basis supported datatypes) configurable.

144) PR 1082 for 925. Adds code generation support for
operates_on=domain kernels in LFRic.

145) PR 1162 for 1160. Add Fortran backend support for unresolved
interfaces when there is wildcard imports.

146) PR 1157 for 478. Updates the LoopFusion transformation so
that the 'same space' option is now provided with the options
dict, in line with the way other transformations work.

147) PR 1165 for 1164. Update PSyIR Assignment node
is_array_range test to work with structures.

148) PR 1072 for 1067. Re-structures the LFRic runnable examples.

149) PR 1177 for 1168. Adds lowering method for the ProfileNode node.

150) PR 1129 towards 753. Adds generic and LFRic Algorithm-Layer
PSyIR nodes and transformations.

151) PR 1191 for 1163. Rationalise config file list processing. This
PR breaks backward compatibility of config files.

152) PR 1169 for 294. Updates the various ChildrenList methods
so that the parent property of child nodes is automatically updated.

153) PR 1196 for 1106. Moves tests related to field and scalar
arguments to LFRic kernels into appropriate files.

154) PR 1186 for 1173. Reshapes mesh maps for LFRic inter-grid kernels.

155) PR 1205 for 870. Removes support for the old-style 'iterates_over'
metadata in LFRic API.

156) PR 1156 for 874. Removes support for old-style LFRic arg_type
descriptor. Primitive type of all kernel arguments must now be
specified.

157) PR 1182 for 1181. Add OpenACC directives support to the PSyIR
Fortran backend.

158) PR 1167 for 1097. Install PSyData wrapper libraries; support
integer fields in PSyData.

159) PR 1176 for 1174. Check that schedule is not empty when applying
profiling.

160) PR 1201 for 1198. Introduces the ScopingNode abstract base
class. Container, Schedule and Routine now subclass this and deep
copying is supported.

161) PR 1211 towards 1210. Add CreateNemoKernTrans transformation.

162) PR 1219 for 1218. Removes the Node.gen_code() abstract method
as this is not used by the new PSyIR nodes that we are adding.

163) PR 1192 towards 753. Add methods to lower the Algorithm layer PSyIR
and create the appropriate symbols to be used by the PSy-layer.

164) PR 1175 for 1066. Update the GOcean OpenCL read/write
interfaces and use so that only halo data moved to/from the host for
halo exchanges.

165) PR 1207 for 1184. Add a validation for the node global constraints
that is check once a node is visited by any of the Visitor classes.

166) PR 1226 towards 1151. Update fparser to 0.0.12 for the
PSyclone release 2.0.0.

167) Issue 1151. Release version 2.0.0 of PSyclone.

1.9.0

Not secure
1) 602 for 597. Modify Node.ancestor() to optionally include
self.

2) 607 for 457. Add fixtures documentation to the developer
guide and split guide into smaller files.

3) 610 towards 567. Extends the Profile transformation so that
a user can supply name and location strings rather than rely
on the automatic generation of suitable names.

4) 600 for 468. Adds a datatype to literals in the PSyIR.

5) 601 for 599. Add create methods to assist bottom up PSyIR node
creation.

6) 608 for 594. Add 'DEFERRED' and 'ATTRIBUTE' as PSyIR array extents.

7) 606 towards 474. Moves Profile and Extract transformations into
new directory structure (psyir/transformations/). Begin putting
domain-specific transformations into domain/ directory.

8) 618 for 567. Corrects the automatic generation of names for
profiled regions.

9) 624 for 566. Removes the 'force profile' option from the psyclone
script as it is no longer required.

10) 614 for 612. Use the datatype of the Literal node in the SIR
backend rather than assuming all literals are real.

11) 555 for 190. Adds a GlobalsToArguments transformation that
converts kernel accesses to global data into arguments.

12) 627 for 625. Adds SymbolTable.new_symbol_name() method to generate
names that don't clash with existing symbols.

13) 623 for 622. Bug fix for adding loop directives inside
region directives for the nemo api.

14) 631 for 628. Add support for compiling additional
non-library code in compilation tests.

15) 643 for 617. Corrects table widths in the html version of the
documentation and also fixes broken links to developer guide.

16) 632 for 585. Add support for the use of expressions when
assigning values to constant Symbols.

17) 635 for 634. Update PSyclone to use new parent functionality
in fparser and to remove spurious white space in some of the
generated (end do/if) code.

18) 657 towards 474. Moves various node classes out of psyGen
and into the psyclone.psyir.nodes module.

19) 669 towards 474. Move those error/exception classes that
were in psyGen into a new 'errors' module.

20) 656 towards 412. Add PSyIR Range node to support array slice
accesses. This could also be used for loop indices.

21) 672 for 651. Add PSyIR lbound and ubound BinaryOperations.

22) 670 for 666. Make the various GOcean grid properties
configurable (previously the mapping from meta-data name to
corresponding Fortran code was a dict in the code).

23) 671 for 653 and 652. Fixes two issues with OpenCL
generation for the GOcean API (handling of the SAVE attribute
and support for real and integer scalar arguments).

24) 541 for 536. Adds transformations to convert MIN, ABS and
SIGN intrinsics into equivalent PSyIR code and uses these in
NEMO/eg4.

25) 662 for 661. Adds PSyIR support for the MATMUL intrinsic
and renames the dynamo examples to lfric.

26) 665 for 603 and 673. Alters the Reference and Array nodes
so that they refer to a Symbol instead of just a name.

27) 683 for 682. Modifies PSyclone fparser2 front-end reader to
work with the latest version of fparser2 which now correctly deals
with intent attributes.

28) 681 for 680. Small fix to failing profiling test (DM assumed
to be on but not explicitly set).

29) 691 for 690. Fix PSyIR fparser frontend handling of allocatable
array declarations.

30) PR 605 for 150. Implements code generation for reference
element properties in the Dynamo0.3 (LFRic) API.

31) PR 615 for 586 and 323. Improves support for use statements
including unqualified use statements.

32) PR 650 for 583. Implementation of the PSyData API and
refactoring of Extraction and Profiling support. Note that the LFRic
(Dynamo0.3) API is not yet fully supported.

33) PR 702 for 660. Read the default KIND parameters for the LFRic
domain from the configuration file.
NOTE: this change requires that any local config file be updated as
the new KIND mapping is mandatory.

34) PR 704 for 699 and 697. Fixes gocean/eg2 and adds a
--compile option to the check_examples script.

35) PR 684 for 655. Re-factor psy-data-based transformations.

36) PR 700 for 687. Adds support for Fortran array syntax
to the PSyIR Fortran front-/back-ends.

37) PR 707 for 694. Extends gocean/eg5 to produce executables
for the simple_timing, dl_timer and drhook profiling wrappers.

38) PR 689 for 312. Removes the Namespace manager and replaces
it with a SymbolTable. This is work towards all code being
generated by the PSyIR backends.

39) PR 722 for 716. Adds support for reference-element normals
and extends the kernel-stub generator to support reference-element
properties.

40) PR 708 for 638. Adds limited support for GOcean grid properties
to the ExtractNode functionality.

41) PR 701 for 193 and 195. Adds support for face and edge
quadrature as well as multiple quadratures in a kernel in the
Dynamo0.3 (LFRic) API. Also extends kernel-stub generator support.

42) PR 709 for 698. Adds the 'target' attribute to declarations
of the PSyData object.

43) PR 729 for 12. Change the Fortran intent of all derived-type
objects passed into the PSy layer in the LFRic API to be 'in'.

44) PR 739 for part of 18. Documents mesh properties that a
kernel can request in LFRic (Dynamo0.3) API.

45) PR 743 for 740. Remove old unused quadrature_mod.f90 from
LFRic (Dynamo0.3 API).

46) PR 734 for 539. Added the Wchi function space to LFRic
(Dynamo0.3 API).

47) PR 728 for 721. Adds DataType hierarchy decoupled from DataSymbol.

48) PR 596 for 500. Makes the NEMO API use the symbol table.

49) PR 686 for 684. Adds the MatMul2CodeTrans which transforms
a MATMUL PSyIR operation into the equivalent PSyIR expression.

50) PR 747 for 18. Implements code generation (PSy-layer and
kernel stub) for mesh properties that a kernel can request in
LFRic (Dynamo0.3) API.

51) PR 731 for 668. Adds support for ProfileInit and ProfileEnd
functions in the PSyData API. Re-structuring of the associated
documentation.

52) PR 756 for 749. Adds the option to generate run-time checks
for the LFRic API that fields are on function spaces consistent
with those specified in kernel metadata.

53) PR 726 for issue 723. Adds the concepts of DataNode and
Statement to the PSyIR and adds checks that ensure that when a
child Node is added to a parent Node, the type of the child Node
is compatible with the type of Node expected by the parent.

54) PR 758 for 733. Shortens the variable names that are
constructed for LFRic PSy-layer variables related to any-space
function spaces.

55) PR 760 for 751. Adds support for W2htrace and W2vtrace
function spaces.

56) PR 762 for 725. Renames the various builtin-operation-to-
code transformations now that they are not NEMO specific.

57) PR 773 for 772 and 715. Adds support for reading Fortran
parameter statements containing symbols into the PSyIR.

58) PR 776 for 775. Small bug fix for upper loop bound in
Matmul2CodeTrans transformation.

59) PR 735 for 732. Add a Visibility attribute to symbols and
fparser2 front-end captures public and private visibilities.

60) PR 770 for 766. Fix operation precedence issues in the Fortran
back-end by inserting parenthesis when needed.

61) PR 769 for 588. Adds frontend support for *N and double
precision type declarations.

1.8.1

Not secure
1) 579 for 509. Improves the structuring of the html version
of the User Guide.

2) PR 581 for 578. Extends the PSyIR Fortran backend so
that variable declarations include kind information. This
currently only works if kind-parameters are declared or
explicitly imported in the local scope - see 587 and 586.

3) PR 562 for 473. Fixes the DAG generation to allow for
Loops having Schedules and children (e.g. loop limits) that
we want to ignore.

4) PR 535 for part of 150. Implements support for parsing
of reference element metadata in the Dynamo0.3 (LFRic) API.

5) PR 516 for 497. Adds support for translating the Fortran
where construct into the PSyIR.

6) PR 545 for 544 and 543. Moves the Symbol support into
a separate sub-module and adds support for parameter declarations
and the functionality to resolve deferred datatypes.

7) PR 559 for 483. Introduces new InlinedKernel class and
uses this as the base class for all NEMO kernels.

8) PR 580 for 542. Adds a Schedule as a child of ExtractNode and
ProfileNode.

9) PR 573 for 438. Fixes all tests to use the value property of
exceptions rather than str(err).

10) PR 416 for 408. Adds support for non-ascii chars in Fortran
strings.

11) PR 591 for 584. Adds the concept of a deferred interface to
PSyIR symbols. This allows declarations to appear in any order and
helps to deal with kind symbols scoped via module use statements.

1.8.0

Not secure
1) 245 and PR 247. Extend PSyIR to support common kernel
constructs (e.g. asignments) and generalise ASTProcessor and
CodeBlocks.

2) 275 and PR 276. Update fparser submodule (to point to latest
version) as this was not done at the last release.

3) 269 and PR 273. Remove generation of unnecessary
infrastructure calls when an Invoke only contains calls to
built-ins.

4) 196 and PR 242. Add support for kernels with evaluators on
multiple target function spaces.

5) 270 and PR 271. Add ability to specify include directories in
PSyclone script to allow Fortran include files to be found when
transforming kernels.

6) 201 and PR 224. Add ability to write transformed kernels to
file. Also ensures that kernel and psy-layer names match, allows
an output directory to be specified and supports different output
options when the same kernel is transformed in more than one
location.

7) 126 and PR 283. Update xfailing tests in alggen_test.py which
require multiple quadrature objects in a single invoke to pass.

8) 227 and PR 233. Add a gocean1.0 API OpenACC example.

9) 207 and PR 280. Remove support for gunghoproto API.

10) 174 and PR 216. Adds the ability to generate an OpenCL PSy
layer in the gocean1.0 API (including an OpenCL transformation).

11) 272 and PR 277. Adds an implicit-to-explicit-loop
transformation for the nemo API.

12) PR 255. Construct a KernelSchedule for kernel code with a
SymbolTable to hold information on variables used.

13) PR 302. Fix API's -> APIs typo in documentation.

14) 292 and PR 293. Add allowed list of nodes to RegionTrans.

15) 254 and PR 299. Adds methods to generate C and OpenCL
code for the Symbol Table and for certain PSyIR nodes.

16) PR 301. Adds an extras_require section to setup.py to simplify
installation of dependencies required for docs and tests.

17) 281 and PR 313. Adds support for compiling the code
generated as part of the GOcean 1.0 tests (including OpenCL
code that uses FortCL).

18) 139 and PR 218. Beginning of implementation of kernel-
extraction functionality (PSyKE). Currently only inserts
comments into generated Fortran code.

19) 327 and PR 328. Fix for erroneous xpassing test.

20) 238 and PR 285. Use fparser2 for parsing the
Algorithm layer (instead of fparser1).

21) 321 and PR 325. Document kernel coding restrictions required
for kernel transformations.

22) 326 PR 335. Alters the use of pytest fixtures to remove the now
deprecated use of the global pytest.config.

23) PR 318. Updates the Schedule hierarchy within the PSyIR.
Introduces a new Schedule base class which KernelSchedule and
InvokeSchedule then sub-class.

24) 332 and PR 333. Bug fix for parsing of simple arithmetic
expressions in kernel argument lists in the Algorithm layer.

25) 337 and PR 341. Bug fix to make matching of kernel names
in module use statements (in the Algorithm) case insensitive.

26) 268 and PR 306. Restructure of PSy and stub code generation.

27) 248 and PR 287. Extends OpenACC transformation support to
the nemo api, adds transformations for OpenACC data and kernel
directives and adds a sequential option to the OpenACC loop
directive transformation.

28) 319 and PR 331. Bug fix to make matching of kernel names
in module use statements (in the Kernel) case insensitive.

29) 349 Bug fix for unicode characters in comment strings for
Python 3 to 3.6.

30) 320 and PR 334. Remove obsolete GUI-related code.

31) 322 and PR 343. Add gocean1.0 api example which contains
kernels with use statements.

32) 345 and PR 352. Makes the search for kernels within the parse
tree case insensitive.

33) 350 and PR 351. Bug fix in the stencil lookup for field
vectors in the Dynamo0.3 API.

34) 336 and PR 338. PSyIR Fortran array parsing support (logical
type, a(xx) dimension specifications and array size can be an
integer variable).

35) 346 and PR 357. In the nemo api put do-while loops into a
code block rather than recognising them as do-loops and make
default(present) optional for ACCKernels transformations.

36) 362 and PR 367. Adds the basics of a transformation for identifying
certain LFRic kernel arguments that can be converted to constants.
Currently only identifies candidate arguments and prints them to
stdout.

37) PR 347 (working towards 256). Adds support for If and CASE
constructs to the PSyIR (superseding and removing the existing, NEMO-
specific support for If constructs).

38) 377 and PR 378. Update fparser submodule to point to latest
fparser master (contains bug fix for Python 2 installation).

39) 329 and PR 371. Removes the global psyGen.MAPPINGS_ACCESSES by
moving the functionality into the api-specific config section of
the configuration file.

40) 361 and PR 365. Identify NemoKernel nodes via the PSyIR
rather than the fparser2 parse tree.

41) 340 and PR 380. Split the documentation into a user-guide
and a developer-guide. These will be available separately on
read-the-docs.

42) 369 and PR 347. Adds support for constant values (fixed compile-time
known values) in the PSyIR Symbol representation.

43) PR 383. Fixes to various pylint errors.

44) PR 384 (working towards 354) Adds support for CASE constructs with
a DEFAULT clause when translating Fortran fparser2 to PSyIR.

45) PR 366 (working towards 323) Improves the Symbol interface
infrastructure with Arguments and FortranGlobals. The Fortran-to-PSyIR
front-end parses the 'use module only' statements.

46) PR 370 for 339. Makes the support for operators in the PSyIR
more robust by using an enumerator. Adds support for some intrinsics.

47) PR 389 for 386. Variable names and associated loop-types
for the NEMO API are now stored in the configuration file.

48) PR 394 for 392. Fixes a bug in the way the test suite checks
for whether the graphviz package is available.

49) PR 387 for 249. Extends OCLTrans() so that all kernels within a
transformed Invoke are converted to OpenCL. Also includes a
work-around for array accesses incorrectly identified as Statement
Functions by fparser2.

50) PR 403 for 390. Use AutoAPI to generate the PSyclone Reference Guide
and build all local documentation using the 'sphinx_rtd_theme'.

51) PR 404 for 364. Re-structure class hierarchy for Kernels, with
CodedKernels and BuiltIns as specialisations.

52) PR 297. Adds support for the Dr Hook profiling library.

53) PR 413 for 411. Adds support for semantic navigation of the
PSyIR tree.

54) PR 376 for 368. Introduces PSyIR back-end infrastructure using the
Visitor Pattern and creates a PSyIR-to-Fortran back-end.

55) PR 428 for 427. Fix to test suite so that empty, transformed
kernel files are not created in the CWD.

56) PR 439 and Issue 438. Instruct pip to install the version of
pytest prior to 5.0 (as changes to the structure of the exception
object break a lot of our tests).

57) PR 420 for 418. Moves the C/OpenCL generation functionality out
of the Node class and implements it as PSyIR backends using the
Visitor Pattern.

58) PR 434 for 354. Add support for translating ranges in
Fortran case statements into PSyIR.

59) PR 421. Alters the generated code for the dynamo 0.3 API so that
the mesh object is obtained from proxy. (Consistent with other accesses
and works around a bug in the PGI compiler.)

60) PR 452 for 397. Removes unnecessary walk_ast() call from the
NemoInvokes constructor.

61) PR 424 for 399. Adds dependence-analysis functionality to
the PSyIR (for reasoning about existing code such as in kernels or
the NEMO API).

62) PR 464 for 443. Adds a coding-style guide to the Developers'
Guide.

63) PR 453 for 449. Adds support for NVIDIA's nvtx profiling
API to the PSyclone profiling interface.

64) PR 454 for 410. Simplifies the Node.walk() method.

65) PR 400 towards 385. Adds support for Fortran Do loops in
the PSyIR - loop bounds are now captured.

66) PR 469 for 465. Removes duplicate lma tests.

67) PR 479 from kinow:fix-gungho-link. Fixes broken GungHo link
in documentation.

68) PR 441 for 373. Adds support for writing transformed LFRic
kernels to file.

69) PR 445 for 442. First step towards supporting OpenACC for
the LFRic (Dynamo0.3 API) PSy layer.

70) PR 466. Adds basic SIR backend to the PSyIR.

71) PR 407 for 315. Use the PSyIR SymbolTable to check for
global symbols (module variables) in kernels. Use this support to
raise an exception in transformations where global symbols are not
supported (e.g. the OpenCL transformation).

72) PR 498 for 388. Documents the PSyIR CodeBlock node and extends
the CodeBlocks with a property to differentiate between statement/s
and expression/s.

73) PR 476 for 429, 432, 433. Fix multi-line codeblocks,
add support for nemo implicit loops and nemo invokes.

74) PR 458 for 425. Add support for profiling in the NEMO API.

75) PR 510 for 419. Code re-structuring - moves what was the
FParser2ASTProcessor into psyir.frontend.fparser2.

76) PR 503 for 502. Adds size intrinsic to PSyIR and makes use
of it in the gocean api's for setting loop bounds.

77) PR 511 for 508. Includes the test directories in the Python
module so that the test utilities are available throught the test
directory hierarchy.

78) PR 496 for 494, 495 and 499. Fixes for OpenCL generation
including the ability to specify kernel local size and command
queue parameters.

79) PR 517 for 513. Adds support for if statements to the SIR
backend.

80) PR 522 for 519. Fix for adding profiling around a select
case construct.

81) PR 460 for 133. Add support for ANY_DISCONTINUOUS_SPACE in
the dynamo0.3 API (LFRic).

82) PR 531 for 455. Add ANY_SPACE_10 to the dynamo0.3 API
(LFRic) to be consistent with LFRic infrastructure.

83) PR 360 for part of 150. Document the rules for reference
element properties in the dynamo0.3 API (LFRic).

84) PR 518 for 393. Add the Container PSyIR node.

85) PR 525 for 459. Bug fix for passing scalar grid properties
to GOcean kernels when using OpenCL.

86) PR 485. Adds a psyclone.psyir.tools.dependency_analysis
module and associated DependencyTools class to help with
dependence analysis in the PSyIR.

87) PR 532 for 204. Adds support for W2broken and W2trace
function spaces in the dynamo0.3 (LFRic) API.

89) PR 515 for 512. Adds PSyIR backend support (Fortran and C)
for Directives.

90) PR 534 for 520. Adds PSyIR Fortran backend support for the
Container Node.

91) 547 and PR 551. Update all READMEs to use MarkDown and correct
paths in documentation on creating built-ins.

92) 546 for PR 553. Rename psyir.psyir.backend.base to visitor.

93) 526 for PR 527. Update fparser submodule and fix parsing of
intrinsics with a single argument.

94) PR 556 for 478. Changes the apply() and validate() methods of
all Transformations to take a dict of options. Also renames any
_validate() methods to validate().

95) PR 558 for 557. Move code-creation out of visitor and into
the appropriate back-ends.

96) PR 565 for 564. Alter implementation of auto-addition of
profiling so that it happens *after* the application of any
transformation script.

97) PR 505 for 303. Restructure view method to move the replicated
logic into the abstract class and add index numbers to the printed
Schedule statements. Also adds a Schedule to encapsulate Directive
children.

98) 570. PSyclone now set to require fparser 0.0.9 on
installation.

99) PR 572 for 571. Bug fixes now that fparser uses unicode.

100) PR 524 for 472. Adds support for scalar variables to the
SIR backend.

101) PR 574 towards 567. Fixes bug in profiling that causes
crash if first kernel in an invoke is a built-in.

102) PR 576 for 530. Includes the repository examples in the
distribution and updates the documentation accordingly.

1.7.0

Not secure
1) 172 and PR 173 Add support for logical declaration, the save
attribute and initialisation in f2pygen (required for the OpenACC
transformation)

2) 137 Add support for Python 3. Travis now runs the test suite
for both Python 2 and Python 3.

3) 159 and PR 165. Adds a configuration option for the Dynamo
0.3 API to turn on (redundant) computation over annexed dofs in
order to reduce the number of halo exchanges required.

4) 119 and PR 171. Adds support for inserting profiling/
monitoring into a Schedule.

5) 179 and PR 183. Bug fix in CompileError constructor to run
tests under Python 3.

6) 121 and PR 166. Adds a user editable configuration file.

7) 181 and PR 182. Adds support for generating declarations of
character variables and for the target attribute.

8) 170 and PR 177. Adds OpenACC transformations for use with the
GOcean1.0 API. Appropriate Kernel transformations need to be added
for full automated OpenACC code parallelisation.

9) 164 and PR 184. Updates documentation to refer to psyclone
script instead of generator.py.

10) PR 187. Add example transformation scripts for the Dynamo
0.3 API.

11) PR 180. Makes the specification of loop limits in the GOcean
API more flexible. This will enable us to support single-iteration
loops.

12) 188 and PR 189. Bug fix to ensure that the name of profiling
regions remains the same when gen() is called multiple times.

13) 176 and PR 200. Introduce new RegionTrans base class and
add _validate method to ensure that the list of nodes to
be transformed (with OpenMP or OpenACC) is correct.

14) 197. Tidying of the test suite to use the new, get_invoke()
utility everywhere.

15) 212 and PR 213. Adds fparser as a submodule of psyclone to
allow concurrent development of PSyclone and fparser (by allowing
development versions of PSyclone to point to development versions
of fparser).

16) 185 and PR 202. Adds ability to modify a kernel in PSyclone
using fparser2 and includes an OpenACC transformation to specify a
kernel is an OpenACC kernel by adding an appropriate
directive. Currently it is not possible to write the modified
kernel to file.

17) 134 and PR 217. Add support for colouring intergrid kernels.

18) 196 and PR 210. Adds metadata support for evaluators on
multiple function spaces in the Dynamo 0.3 API.

19) 191 and PR 215. Add ability to specify iteration space
definitions to the configuration file.

20) 228 and PR 232. Fix for examples and travis now checks
examples at the same time as coverage and code style.

21) 219 and PR 225. Refactor dependence analysis and fix bug
that meant that unnecessary halo exchanges of vector components
were not being removed (following a redundant computation
transformation).

22) 27 and PR 209. Created initial NEMO api. Needs lots of work
but it provides a starting point.

23) 214 and PR 221. Adds a transformation to convert a
synchronous halo exchange into an asynchronous halo exchange.

24) 235 and PR 243. Removes dependency on Habakkuk in NEMO API.

25) 134 and PR 236. Adds support for adding OpenMP to intergrid
kernels.

26) 198 and PR 223. Updates PSyclone to use the latest
version of dl_esm_inf which has "GO_" prefixed to all public
quantities. Adds dl_esm_inf as a git submodule.

27) 158 and PR 253. Fix to remove unnecessary halo exchanges
related to GH_INC updates to kernel arguments.

28) 317 and PR 330. Fix to allow module use statements to be
added to functions.

29) 330 and PR 422. Adds PSyIR node to represent Nary operators and
increases the number of supported operators.

Page 2 of 6

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.