Skip to content

Releases: JeffIrwin/syntran

0.0.55

16 Nov 18:33
Compare
Choose a tag to compare

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

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

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

16 Nov 01:04
Compare
Choose a tag to compare

Installation

Grab one of the assets below. See the installation instructions from the readme

Known issues

What's new

  • added "jumping" control flow statements:
    • break (fortran's loop exit)
    • continue (fortran loop cycle)
  • added several non-decimal integer literals:
    • hex literals, e.g. 0xff
    • octal literals, e.g. 0o77
    • binary literals, e.g. 0b11
  • added underscore _ as a numeric visual separator, e.g. 1_000_000 or 0xDEAD_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 is 4294967295
    • 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() and i64() casting fns
    • note that i64(0xffff_ffff) is still -1 because the literal 0xffff_ffff is interpreted as -1 by the lexer long before the i64() function is evaluated
  • overloaded the exp() fn for f32 array and f64 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 array
    • norm2() of a float array
    • dot() 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) any f32 or f64 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

20 Oct 23:38
Compare
Choose a tag to compare

Installation

Grab one of the assets below. See the installation instructions from the readme

Known issues

What's new

  • BREAKING CHANGE: added 64-bit f64 floating-point type
    • this is breaking because f64 is now the default float type, not f32
    • if you wrote any code that used a fn with f32 parameters, it will need to be updated. either (1) change the arguments to f32 to match your function declaration, e.g. from f64 1.0 to f32 1.0f, or (2) change your fn parameters from f32 to f64 to match your old float literals, which now default to f64
  • 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, and exp fns for f64
  • added documentation for several intrinsic fns: all, any, char, count, exit, parse_f32, parse_i64, and sum. 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 and i64 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

15 Sep 00:06
Compare
Choose a tag to compare

Installation

Grab one of the assets below. See the installation instructions from the readme

Known issues

What's new

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

09 Sep 23:26
Compare
Choose a tag to compare

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

06 Sep 01:02
Compare
Choose a tag to compare

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

0.0.47

04 Sep 02:23
Compare
Choose a tag to compare

I'm experimenting with github releases. Please bear with me!