Factor 0.96 now available
Saturday, April 20, 2013
“You’re smart too late and old too soon.” - Mike Tyson
I’m very pleased to announce the release of Factor 0.96!
OS/CPU | Windows | Mac OS | Linux |
---|---|---|---|
x86 | 0.96 | 0.96 | 0.96 |
x86-64 | 0.96 | 0.96 | 0.96 |
Source code: 0.96
This release is brought to you with over 1100 commits by the following individuals:
Alex Vondrak, Benjamin Pollack, Daniel Nagel, Doug Coleman, John Benediktsson, Jon Harper, Michael T. Richter, and @PGGB.
Aside from bug fixes and various library improvements, I want to highlight the following changes:
- Major compiler improvements (thanks Alex Vondrak!):
- Global Value Numbering (disabled currently by default)
- Parallel-Copy Semantics
- Performance improvements to hashtables, hash-sets, heaps, and bloom-filters.
- Support for Retina Displays on OS X
- Greatly improved table gadget performance
- PDF streams (and related PDF documentation)!
- Speed up math comparisons
- Support resize-window (thanks Jon Harper!)
- New logo and icons for Factor
- Added editor support for Textadept, Sublime Text, Geany, BBEdit, and XCode.
Some possible backwards compatibility issues:
- Changed
<groups>
,<clumps>
, and<circular-clumps>
to use slices. - Removed
<slicing-groups>
,<slicing-clumps>
,<slicing-circular-clumps>
. - Renamed
editors.notepadpp
toeditors.notepad++
.
Since quite a few performance improvements have been made, I thought I would highlight some improvements using our benchmarks against version 0.95. The chart below shows benchmark time in 0.96 as a percent of the time it took in 0.95, lower is better:
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
- arrays.shaped: prototype of n-dimensional array class (Doug Coleman)
- base85: support for Base85 encoding (John Benediktsson)
- benchmark: flip, lcs, linked-assocs, unicode, randomize, timers (John Benediktsson)
- cgi: support using Factor in CGI scripts (John Benediktsson)
- checksums.bsd: support for BSD-style checksums (John Benediktsson)
- colors.cmyk: adding support for CMYK colors (John Benediktsson)
- colors.hsl: adding HSL color support (John Benediktsson)
- colors.mix: mixing colors together (John Benediktsson)
- colors.yiq: adding YIQ color support (John Benediktsson)
- combinators.extras: new words (Doug Coleman)
- compiler.cfg.graphviz: graphviz support (Alex Vondrak)
- compiler.cfg.gvn: global value numbering (Alex Vondrak)
- hacker-news: add a news.ycombinator.com wrapper (Doug Coleman)
- hash-sets.wrapped: identity hash-sets and other wrapped versions (John Benediktsson)
- help.pdf: render PDF files from help articles (John Benediktsson)
- io.files.acls: support for ACL’s on OS X (Doug Coleman)
- io.random: adding random-line and random-lines (John Benediktsson)
- io.streams.random: adding random-stream (Doug Coleman)
- io.streams.zero: adding zero-stream (Doug Coleman)
- ip-parser: adding “ping-compatible” IP parser (John Benediktsson)
- literate: support for literate programming ideas (John Benediktsson)
- machine-learning.data-sets: load common data-sets (John Benediktsson)
- machine-learning.rebalancing: support for rebalancing an {X,y} dataset (Doug Coleman)
- machine-learning.one-hot: adding one-hot encoder (Doug Coleman)
- math.cardinality: adding a cardinality estimator (John Benediktsson)
- math.combinatorics.bits: adding bitwise permutations (John Benediktsson)
- math.factorials: adding lots of factorial words (John Benediktsson
- math.hashcodes: consistent number hashing (John Benediktsson)
- math.transforms.bwt: adding Burrows-Wheeler transform (John Benediktsson)
- pdf: adding a pdf render vocab (John Benediktsson)
- random.c: prototype of “libc” random number generator (John Benediktsson)
- reddit: add a Reddit API wrapper (John Benediktsson and Doug Coleman)
- sequences.rotated: adding rotated virtual sequence (John Benediktsson)
- sequences.shifted: adding shifted virtual sequence (John Benediktsson)
- sequences.snipped: adding snipped virtual sequence (John Benediktsson)
- sequences.zipped: adding zipped virtual sequence (John Benediktsson)
- sets.extras: new words (Doug Coleman)
- terminal: adding terminal-size support (John Benediktsson)
- tools.which: adding a “which” command (John Benediktsson)