Downloads
Tools
FreeST Syntax Highlighting for Visual Studio Code
This extension provides basic syntax highlighting for the FreeST programming language.
FreeST Language Server for Visual Studio Code
Error highlighting
Long gone are the days of switching back and forth between editor and console to locate errors. Errors are now highlighted directly on the editor, just hover the highlighted code to see the error message (as given by the compiler).
The extensions verifies files after every file save (not every file change as other extensions do).
Run in terminal
Run a FreeST file directly from the editor in VSCode’s integrated terminal by right clicking it and selecting FreeST: Run
.
Load into interpreter
Load a FreeST file directly into FreeST’s interpreter (freesti
) in VSCode’s integrated terminal by right clicking it and selecting FreeST: Load into interpreter
.
FreeST Syntax Highlighting for Emacs
This extension provides basic syntax highlighting for editing FreeST programs on Emacs. For installation details please refer to the README file in the GitHub repository.
FreeST
For installation details please refer to the README file in the corresponding zip folder.
Version | Release date | Changelog | Download link |
---|---|---|---|
3.2.0 | Apr 22, 2024 | Changelog | Download |
3.1.0 | Nov 27, 2023 | Changelog | Download |
3.0.0 | Apr 12, 2023 | Changelog | Download |
2.2.0 | Nov 16, 2021 | Changelog | Download |
2.1.0 | Mar 30, 2021 | Changelog | Download |
2.0.0 | Feb 15, 2021 | Changelog | Download |
1.0.3a | Jan 12, 2021 | Changelog | Download |
1.0.3 | Jan 10, 2021 | Changelog | Download |
1.0.2 | Nov 26, 2020 | Changelog | Download |
1.0.1 | Jul 22, 2020 | Changelog | Download |
Changelog
Version 3.2.0
- Kind inference
- Minimal renaming
- Fixing bug on type checking recursive linear functions
- Tuning error messages
- Other small bug fixes
Version 3.1.0
- New kind A for channels that may be created, that may be used with
new
new
function is restricted to types of kind A (new : forall a:1A . () -> (a, dualof a)
)- New types:
Close
andWait
(for closing channels and for waiting for channels to be closed) - Function
close
, non-blocking (for channels of typeClose
) - Function
wait
, blocking (for channels of typeWait
) - Tuning error messages
- Tuning show for runtime values
- New
Float
type - Floating-point arithmetic
- Function
consume
becomesreadApply
- Function over lists
append
becomes(++)
- Sequential composition of expressions (
;
) can be used as section - Bug fixes
Version 3.0.0
- REPL (freesti)
- New syntax for kinds: 1S and *S for linear and unrestricted session types, 1T and *T for linear and unrestricted functional types
- Higher-order session types (removed kinds ML and MU)
- New syntax for functions: 1-> and *-> (or simply ->) for linear and unrestricted functions
- Pattern matching on function arguments (datatype constructors and internal choices)
- ‘End’ type and ‘close’ function for closing channels
- Simple module system
- Shared channels
- Library functions to work with shared channels
- Library functions to work with concurrency
- Primitives for file handling
- Primitives for handling Standard Input/Output (stdout, stdin and stderr)
- ‘hPut’ functions to interact with a shared printing system
- Builtin support for lists of integers: [], [1,2,3] and (1::2::[])
- Library functions over lists (‘import List’)
- New syntax for type application: id @Int instead of id [Int]
- New type for ‘fork’ function: forall a:1T. (() 1-> a) -> ()
- ‘new’ is now a function of type forall a:1S. () -> (a, dualof a)
- Channels created through the ‘new’ function must be ended (reach an ‘End’)
- Multiple function signatures in a row: x, y, z : Int
- Bug fixes
Version 2.2.0
- Fork can be used with and without type parameters
- Send and receive can be used partially applied
- Adding collect function (
case collect c of
is the same ofmatch c with
) - New mode with proper syntax-highlighting for emacs
- Better error messages
- Warning were added
- Now we allow the dual of non-recursive variables through co-variables
- Type abstractions are now values
- Added a restriction imposing expressions under type abstractions to be values
- Fixed the associativity of type applications
- Fixed the Duality for recursion variables
- New primitive fix :
forall a . ((a -> a) -> (a -> a)) -> (a -> a)
- New option -m or –main= that allows to choose the main function to be run
- New option -q or –quiet that suppresses all warnings
- Small bug fixes
Version 2.1.0
- Fork is now polymorphic
- Adding options -v,–version and -h,–help
- Tuning
show
for recursive and polymorphic types - Small bug fixes
Version 2.0.0
- Impredicative polymorphism (System F)
- New kinds that classify types that can be sent in channels (MU and ML)
- Adding more prelude functions (
(^)
,max
,min
,succ
,pred
,abs
,quot
,gcd
,lcm
,subtract
,even
,odd
,error
,id
,flip
,until
,curry
,uncurry
,swap
). - Section-like constants for all operators (
(+)
,(*)
, …) - Proper sections for all operators (except for ‘-‘, one should use subtract in this case)
- Support for more multi-byte unicode symbols
- Printing boolean/arithmetic/relational operators in the infix way instead of prefix as it previously was.
- Small bug fixes
Version 1.0.3a
- Fixes some issues related to Strings on v1.0.3 (Show for value and unparser)
Version 1.0.3
- Adding String literals
- Adding
printString
andprintStringLn
- Adding the
&
operator. - Showing Types and expressions with less parentheses
- Small bug fixes
Version 1.0.2
- Changing the order of the parameters of send and select functions
- Adding the
$
operator - Small bug fixes
Version 1.0.1
- Fixing error messages for environments. Now, it only shows the different elements between the two environments
- Fixing parser and lexer error messages
- Adding Ln print versions for basic types, namely,
printIntLn
,printBoolLn
,printCharLn
, andprintUnitLn
- Adding a simple mode for emacs and atom
- Small bug fixes