Releases: JeffIrwin/syntran
0.0.55
Installation
Grab one of the assets below. Note the new syntran-rocky.zip
installer for this release. See the installation instructions from the readme
Known issues
- syntran crashes on Windows intermittently: #16
- shared library disclaimer: https://github.com/JeffIrwin/syntran/blob/main/doc/shared-libs.md
What's new
- this is a binary-only update
- no new features or source changes other than a trivial version number update
- fixed a glibc dependency issue on rocky linux: #19
- the new asset
syntran-rocky.zip
is built on rocky and will install on rocky - most other linux distros can use the usual ubuntu-based
syntran-linux.zip
asset
- the new asset
Roadmap
As a complement to the new hex literals, I am working on bitwise operations, i.e. shifting, bitwise and, or, xor, and not. Unfortunately I don't have time to comfortably finish before December, so expect PR #18 to be merged in late December or early next year
Advent of Code is in December. I will do it in syntran again this year and then add those solutions to test coverage. This will at the very least double the test coverage of scripts longer than a dozen lines (fpm test long
as opposed to the shorter unit tests in fpm test test
). There is a good chance that I may find and fix some bugs during AOC or add features to be able to complete the challenge
0.0.54
Installation
Grab one of the assets below. See the installation instructions from the readme
Known issues
- binary installer doesn't work on Rocky or Alma Linux: #19
- fixed in 0.0.55
- syntran crashes on Windows intermittently: #16
- shared library disclaimer: https://github.com/JeffIrwin/syntran/blob/main/doc/shared-libs.md
What's new
- added "jumping" control flow statements:
break
(fortran's loopexit
)continue
(fortran loopcycle
)
- added several non-decimal integer literals:
- hex literals, e.g.
0xff
- octal literals, e.g.
0o77
- binary literals, e.g.
0b11
- hex literals, e.g.
- added underscore
_
as a numeric visual separator, e.g.1_000_000
or0xDEAD_BEEF
- added literal type suffixes after apostrophes to override default type inference:
- small numbers are
i32
by default, e.g.42
- this can be ambiguous for hex literals, e.g.
0xffff_ffff
is-1
as a 32-bit integer by default - to make a 64-bit integer, use
0xffff_ffff'i64
, which is4294967295
- to explicitly clarify the default,
0xffff_ffff'i32
is still-1
- suffixes can be used after decimal literals too, but they provide no functionality that wasn't previously available with the
i32()
andi64()
casting fns - note that
i64(0xffff_ffff)
is still-1
because the literal0xffff_ffff
is interpreted as-1
by the lexer long before thei64()
function is evaluated
- small numbers are
- overloaded the
exp()
fn forf32
array andf64
array arguments - added many new intrinsic (built in) fns:
cos()
,sin()
,tan()
acos()
,asin()
,atan()
cosd()
,sind()
,tand()
acosd()
,asind()
,atand()
log()
,log10()
,log2()
abs()
sqrt()
product()
of a numeric arraynorm2()
of a float arraydot()
for dot product of two numeric arrays- all of the new fns have the same overloaded signatures as
exp()
, i.e. they can take (and return) anyf32
orf64
scalar or array of any rank, unless noted otherwise - i'm falling behind on documentation, but you can assume that all of these functions are the same as the standard fortran ones if i haven't provided any further description
Roadmap
As a complement to the new hex literals, I am working on bitwise operations, i.e. shifting, bitwise and, or, xor, and not. Unfortunately I don't have time to comfortably finish before December, so expect PR #18 to be merged in late December or early next year
Advent of Code is in December. I will do it in syntran again this year and then add those solutions to test coverage. This will at the very least double the test coverage of scripts longer than a dozen lines (fpm test long
as opposed to the shorter unit tests in fpm test test
). There is a good chance that I may find and fix some bugs during AOC or add features to be able to complete the challenge
0.0.53
Installation
Grab one of the assets below. See the installation instructions from the readme
Known issues
- syntran crashes on Windows intermittently: #16
- shared library disclaimer: https://github.com/JeffIrwin/syntran/blob/main/doc/shared-libs.md
What's new
- BREAKING CHANGE: added 64-bit
f64
floating-point type- this is breaking because
f64
is now the default float type, notf32
- if you wrote any code that used a fn with
f32
parameters, it will need to be updated. either (1) change the arguments tof32
to match your function declaration, e.g. from f641.0
to f321.0f
, or (2) change your fn parameters fromf32
tof64
to match your old float literals, which now default tof64
- this is breaking because
- as part of the
f64
work, most of the fortran source for binary arithmetic operations is now auto-generated from src/math_bin_template.f90
- fixed a bug where numeric type information could become corrupted after assigning from a variable of a different numeric type: c1c3523
- added
parse_f64()
fn to read a float from a string - overloaded
min
,max
, andexp
fns for f64 - added documentation for several intrinsic fns:
all
,any
,char
,count
,exit
,parse_f32
,parse_i64
, andsum
. these fns are not new, just their documentation: https://github.com/JeffIrwin/syntran/blob/main/doc/README.md - clarified inference of integer literal types in documentation: 59dc6fa
- fixed a type-checking bug where the rank information for the result of
i32
andi64
fns was lost. i haven't bisected it, but i suspect this was introduced with structs: 0cc67a1
Roadmap
I'm not planning much for a while, maybe some small features or bug fixes in the next couple months
Advent of Code is in December. I will do it in syntran again this year and then add those solutions to test coverage. This will at the very least double the test coverage of scripts longer than a dozen lines (fpm test long
as opposed to the shorter unit tests in fpm test test
). There is a good chance that I may find and fix some bugs during AOC or add features to be able to complete the challenge
0.0.51
Installation
Grab one of the assets below. See the installation instructions from the readme
Known issues
- syntran crashes on Windows intermittently: #16
- shared library disclaimer: https://github.com/JeffIrwin/syntran/blob/main/doc/shared-libs.md
What's new
- added structs in #14. see the documentation on structs
- fixed an uninitialized variable that sometimes caused a crash on Windows
- added the
char()
intrinsic function 1821ed7 - added the
--quiet
command line argument 5f55fb3 - added a quine. this receives test coverage in ci/cd. what is a quine?
What happened to 0.0.50?
I was thinking of making a release very shortly after structs were added. However, I found a bug in 0.0.50 that warranted another version bump: 8a92024
Roadmap
I'm not planning much for a while, maybe some small features or bug fixes in the next couple months
Advent of Code is in December. I will do it in syntran again this year and then add those solutions to test coverage. This will at the very least double the test coverage of scripts longer than a dozen lines (fpm test long
as opposed to the shorter unit tests in fpm test test
). There is a good chance that I may find and fix some bugs during AOC or add features to be able to complete the challenge
0.0.49
Installation
Grab one of the assets below. See the installation instructions from the readme
Known issues
- syntran crashes on Windows intermittently: #16
What's new
- there are more details in
syntran --version
output:- git commit hash
- build date
- fortran compiler version
- there is better consistency between binary assets for each operating system compared to the staggered 0.0.48 release
Shared library disclaimer
I think all of the binary packages should work. I've made an attempt to include the required shared libraries (.so
for Linux, .dll
for Windows, or .dylib
for macOS). However, on Windows and more so on macOS, I have only done limited testing outside of dev machines. That means I might have missed some dependencies and you might have to install a particular version of gfortran or gcc to get things working. Please report any issues!
On Linux I'm a little more confident about dependencies, because I tested the release in minimal docker environments on various distros. Currently 7 distros are known to work. There are a few that I know don't work, e.g. rocky 8 and alpine, because they don't have compatible versions of glibc
Roadmap
I'm planning to merge structs soon #14. It's a big feature so it could be disruptive. I'm releasing 0.0.49 now as one last stable version before structs
0.0.48
I'm experimenting with github releases. Please bear with me!
Shared library disclaimer
I think all of the binary packages should work. I've made an attempt to include the required shared libraries (.so
for Linux, .dll
for Windows, or .dylib
for macOS). However, on Windows and more so on macOS, I have only done limited testing outside of dev machines. That means I might have missed some dependencies and you might have to install a particular version of gfortran or gcc to get things working. Please report any issues!
On Linux I'm a little more confident about dependencies, because I tested the release in minimal docker environments on various distros. Currently 7 distros are known to work. There are a few that I know don't work, e.g. rocky 8 and alpine, because they don't have compatible versions of glibc
Roadmap
Release 0.0.49 will be posted in a couple days and it should have better consistency in the binaries for the 3 operating systems. In this release, they all came from slightly different commits as I slowly got binary packages working through trial and error
After that I'm planning to merge structs #14. It's a big feature so it could be disruptive