More examples and adding a workflow to make sure Farr works correctly on different platforms and Python versions.
Moving the algorithms library to the examples folder.
A hotfix for interpreting arguments before creating a new environment!
Enhancements and new features in invocation and operations:
- Added left (
<<
) and right (>>
) shift operators for binary manipulation. - Support for binary, octal, and hexadecimal literals.
- Enforced keyword-only arguments for optional parameters to prevent reassignment through positional arguments.
- Enhanced function, struct, and method invocation error handling with improved messages.
Adding the functools
module to our native libraries with these useful functions:
all
any
map
partial
Smarter prefix and postfix operations; and a huge improvement in tests...
Because the use of terms has been reduced to two, now parentheses must be used to separate expressions! For a better understanding, look at the parse trees taken from the execution of code ^ 5 2 == 25;
in the previous version and then the current version:
- ModuleNode(body=[RelationalOperationNode(row=2,
- column=7,
- operator='EqualEqual',
- left=ArithmeticOperationNode(row=2,
- column=1,
- operator='Power',
- left=IntegerNode(row=2,
- column=3,
- value='5'),
- right=IntegerNode(row=2,
+ ModuleNode(body=[ArithmeticOperationNode(row=2,
+ column=1,
+ operator='Power',
+ left=IntegerNode(row=2,
+ column=3,
+ value='5'),
+ right=RelationalOperationNode(row=2,
+ column=7,
+ operator='EqualEqual',
+ left=IntegerNode(row=2,
- value='2')),
- right=IntegerNode(row=2,
- column=10,
- value='25'))])
+ value='2'),
+ right=IntegerNode(row=2,
+ column=10,
+ value='25')))])
Providing the ability to use all types of assignments even in chained form without any intermediate method...
For better debugging, we will use a linter.
Fixing the dissimilarity of versions in different places...
Introducing ternary expressions for inline conditional logic, a similar statement to switch, and prefix operations for direct arithmetic manipulation!
Updating our libs
folder structure...
libs
├── algorithms
│ ├── funda.farr
│ └── searching.farr
├── database
│ ├── funda.farr
│ └── kime
│ └── funda.farr
- ├── datetime
- │ └── funda.farr
+ ├── datetime.farr
- ├── fs
- │ └── funda.farr
+ ├── fs.farr
- ├── logging
- │ └── funda.farr
+ ├── logging.farr
├── math
│ ├── funda.farr
│ └── random.farr
- ├── os
- │ └── funda.farr
+ ├── os.farr
- └── platform
- └── funda.farr
+ └── platform.farr
An honest attempt to adapt to different platforms — there is still a possibility of error!
Handling non-raw strings and their escape characters...
The first release of Farr programming language! 😌