Factor 0.97 now available
re-factor.blogspot.com
re-factor.blogspot.com
(not a criticism, just a question)
Factor came to my attention during the 0.94 release in 2010, which was solid enough to learn Factor in a great IDE. I wish that I'd had more time to invest more seriously over the years, but am extremely glad that it's still being actively worked on. You can tell this from the Factor github commit log[2].
As far as I'm aware, since the community is rather small, most people that code in Factor don't bother much with the release numbers and just compile their images straight from github as commits are made. The "releases" are done more as a public milestone.
[1] http://re-factor.blogspot.com/2013/04/factor-0-96-now-availa...
0.93 was released April 16, 2010.
0.94 was released September 18, 2010 (+5 months).
0.95 was released August 16, 2012 (+23 months, 2500 commits).
0.96 was released April 20, 2013 (+9 months, 1100 commits).
0.97 was released November 1, 2014 (+19 months, 1400 commits).
The core developers (I am one) generally use the latest development version which, except for some changes to the build farm a few months ago, is made available as tested nightly builds from our build farm.
A partial reason for the delayed release was waiting for sufficient changes to "justify" a release (a bit of a soft qualitative delay, especially as we kept working on some new features). Going to a time-based release schedule might be nice, something to think about anyway.
Keep the faith, the world needs more powerful, offbeat languages!
John Benediktsson has been leading the project since then, and as the post mentions, there are and have been many other contributors, but I think it's fair to say that the project lost a lot of momentum when Slava stepped down.
Joe Groff, who was another important early contributor, and who is now part of the Swift team at Apple, gave a talk that included an interesting critical retrospective on the factor project (or at least one chapter of it). I'm sure there was a better formatted version of it at some point, but this is all I could find:
https://github.com/jckarter/zissou/blob/master/talk-notes.tx...
See "bad parts" for the criticisms.
Incidentally, these notes were the first place that I learned of the Julia language.
[1] Though maybe some Forths can be considered modern.
"It’s also intended to be a practical successor to Cat, which was the first statically typed concatenative language."
Congrats for the release.
Here's tar in Factor:
https://github.com/slavapestov/factor/blob/master/extra/tar/...
For untarring the linux kernel, Factor tar beats /usr/bin/tar on my Mac by 1s, but 30s vs 6s on Linux for some reason. Could be SSD vs spinning disk, or worse i/o code on Linux. Funnily, there are about 10 files that differ in case only, and Mac file system is case-insensitive by default, so you can't even untar the linux kernel correctly.
Here's host using the dns client library:
https://github.com/slavapestov/factor/blob/master/extra/tool...
https://github.com/slavapestov/factor/blob/master/extra/dns/...
I wrote it because gethostbyname is blocking and Factor has nonblocking i/o for everything else.
There's a cross-platform disk usage tool that outputs the same stuff as df but works on Windows too:
https://github.com/slavapestov/factor/blob/master/basis/tool...
USE: tools.files file-systems.
There's a high-level library for doing whatever you want with unix users/groups:https://github.com/slavapestov/factor/blob/master/basis/unix...
effective-user-name [ ] with-effective-user
effective-user-id [ ] with-effective-user
all-users
https://github.com/slavapestov/factor/blob/master/basis/unix... effective-group-name [ ] with-effective-group
effective-group-id [ ] with-effective-group
all-groups
Graphics demo--raytraced spheres using GLSL on a checkerboard pattern, spheres each play their own music:https://github.com/slavapestov/factor/tree/master/extra/gpu/...
https://github.com/slavapestov/factor/blob/master/extra/gpu/...
The main file that sets up the world and loads the shaders and sound is 130 lines and reuses the game library.
but for myself, the fun is in writing a toy concatenative language. The parsing difficulty borders on non-existent, making it easy to skip to thinking about semantics. once you actually try to implement programs within concatenative syntax, you will surely run into its main pitfalls: there are too many valid programs that produce wrong results, and there are whole new classes of errors introduced through having to maintain stack state yourself. writing code in this style can develop into a complex puzzle very quickly, although it's beautiful when it does work.
The whole idea of picking a Forth or another concatenative language off the shelf is spoiling 3/4th of the concept. The point of stack languages is that they are very easy to implement.
So don't learn a stack based language, make one and grow it until you can actually use it to make useful tools.