Re: Factor

Factor: the language, the theory, and the practice.

Factor 0.99 now available

Thursday, August 24, 2023


“I hear and I forget. I see and I remember. I do and I understand.” - Confucius

I’m very pleased to announce the release of Factor 0.99!

OS/CPU Windows Mac OS Linux
x86 0.99 0.99
x86-64 0.99 0.99 0.99

Source code: 0.99

This release is brought to you with over 4,100 commits by the following individuals:

Abtin Molavi, Ales Huzik, Alex null Maestas, Alexander Ilin, Alexandre Rousseau, Aleksander Sabak, Arnaut Daniel, Ashish Kurmi, Benjamin Pollack, Cat Stevens, Cecilia Knäbchen, Chris Double, Craig Allen, Dave Carlton, David Flores, David Mindlin, Doug Coleman, Dusk Banks, Fred Alger, Giftpflanze, Ikko Ashimine, Jack Lucas, John Benediktsson, Jon Harper, Justin Hill, KUSUMOTO Norio, Keldan Chapman, Kevin Cope, Konrad Hinsen, Kye Shi, Mark Sweeney, Mohamed Akram, Nandeeka Nayak, Niklas Larsson, Raghu Ranganathan, Rudi Grinberg, Samuel Tardieu, Sebastian Strobl, Sergii Fesenko, Silvio Mayolo, Steve Ayerhart, Zoltán Kéri, @Capital-EX, @inivekin, @mariari, @nicolas-p, @nomennescio, @timor

Besides some bug fixes and library improvements, I want to highlight the following changes:

  • Added a Guided Tour of Factor
  • Upgraded to Unicode 15
  • The fixups vocabulary makes upgrading easier when words are renamed
  • Windows binaries now include OpenSSL 3.1.2 and SQLite 3.42.0 for convenience
  • Re-added some support for FreeBSD
  • Improved non-English text entry on macOS
  • Removed support for 32-bit macOS
  • File editors are now specified using EDITOR: syntax
  • Switched to newer ucrtbase.dll on Windows
  • Support disassembly using Capstone in addition to Udis86
  • String literals must be separated by whitespace – "hello"length and "foo""bar"append are no longer accepted by the parser
  • The fry and locals syntax words are now in syntax for use in all vocabularies
  • Any word can be referred to by it’s fully-qualified name (e.g., math:+ or xml.writer:pprint-xml)
  • The Emacs “FUEL” and VIM plugins have been updated

Some possible backwards compatibility issues:

  • Moved colors.constants and colors.hex to colors vocabulary
  • Merged into io.binary
  • Merged io.directories.{hierarchy,search} into io.directories
  • Merged io.encodings.utf16n into io.encodings.utf16
  • Renamed math.ranges to ranges
  • Renamed ranges words from [a,b] to [a..b]
  • Changed FUNCTION: syntax to not require a semi-colon at the end
  • Renamed exists? to file-exists?
  • Renamed vector dot product from v. to vdot
  • Renamed short to index-or-length
  • Renamed various sorting words to be more simple
  • Improved icons and other UI images on retina displays
  • URL query strings only split on ampersand (?a=b&c=d) not semi-colon (?a=b;c=d)
  • Renamed some words in interval-sets to prefix interval-
  • Renamed contents to read-contents
  • Renamed lines to read-lines
  • Renamed selections to all-selections
  • Renamed intersection to intersect-all
  • Merged json.reader and json.writer into json vocabulary
  • Merged bson.reader and bson.writer into bson vocabulary
  • Moved talks to separate factor-talks repository
  • Renamed ui.backend.gtk to ui.backend.gtk2 to prepare for newer GTK support

What is Factor

Factor is a concatenative, stack-based programming language with high-level features including dynamic types, extensible syntax, macros, and garbage collection. On a practical side, Factor has a full-featured library, supports many different platforms, and has been extensively documented.

The implementation is fully compiled for performance, while still supporting interactive development. Factor applications are portable between all common platforms. Factor can deploy stand-alone applications on all platforms. Full source code for the Factor project is available under a BSD license.

New Libraries:

Improved Libraries:

VM Improvements:

  • Increase codeheap default to 96 MB
  • Set current-directory when launching
  • More work on ARM backend
  • Faster file-exists? on Windows
  • Some work on FreeBSD support