"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 X Linux x86 x86-64 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)
Is there a HelloWorld demo I could try out?
ReplyDeletehttp://gitweb.factorcode.org/gitweb.cgi?p=factor;a=blob;f=extra/hello-world/hello-world.factor;hb=HEAD
ReplyDeleteCongrats on the release!
ReplyDeleteCongrats on the release! Looks like some real speed improvements.
ReplyDeleteWhere is Factor's roadmap? Everyone is working towards a 1.0 release, but what would constitute a 1.0 release? With each release, Slava would update the roadmap and set the next goals.
I realize I'm that guy right now, but I'm just wondering where everything is headed.
so you dont want to support non-x86 platform? i got a arm chromebook really want to run factor on it
ReplyDeleteWe do want to support ARM, and hope to include it in the next release -- the ARM backend is not quite finished yet.
ReplyDeleteIs there any way to increase the font size in the listener?
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteHi Steve,
ReplyDeleteWe haven't exposed it in the UI yet, but you can run this in the listener to increase the fonts:
USE: ui.tools.listener
"monospace" 18 set-listener-font
In the history browser, you can just do Cmd-+.
John,
ReplyDeleteFonts became bigger now. However, Chinese characters become ? mark in box.
How should I fix it?
thanks,
Steve Tsai
Perhaps you're system font is different by default, how about:
ReplyDeleteget-listener input>> font>> name>> 18 set-listener-font
John,
ReplyDeleteAfter changing my Win7 locale (language for non-Unicode programs) to Chinese. Both instructions you provided work. Now I can input and output Chinese in listener.
Another question: how can I continue to use Chinese if I want to keep my locale in English instead of Chinese.
Regards,
Steve
Not sure what you mean, we've had really strong unicode support since 2009, what behavior are you seeing?
ReplyDeleteif you paste "中文" (Chinese characters) to the listener, you will see the question marks in Windows 7. You need to change your Win7 locale to Chinese to see Chinese characters in the listener.
ReplyDelete