Skip to content

Latest commit

 

History

History
127 lines (95 loc) · 5.52 KB

CHANGELOG.md

File metadata and controls

127 lines (95 loc) · 5.52 KB

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! 😌