Factor Changelog

What's new in Factor 0.97

Dec 4, 2014
  • HIGHLIGHTS:
  • Support for more color spaces including RYB and YUV
  • Support for SSL on windows
  • Some new checksum implementations and performance improvements
  • Cross-platform C library finder
  • Client for IMAP protocol
  • Support for MessagePack encoding and decoding
  • Support for uuencoding and uudecoding
  • Support for terminfo database files
  • Support for tzinfo files
  • Support for in-place sorting (using quicksort)
  • Bindings for ZeroMQ and Python
  • Runner for Applescript (including definition support)
  • Performance improvement to printf and support for vprintf
  • Support saving images in GTK, Cocoa, and Windows backends
  • Generative Modeling Language
  • Lots of documentation added to the compiler
  • Many, many improvements to the FUEL emacs mode
  • Some possible backwards compatibility issues:
  • Fixed mask? in math.bitwise to be more correct
  • Fixed bias in Mersenne Twister random number generator
  • Better support for shebang (no longer need a space after #!)
  • io-error now lives in the libc vocabulary
  • sender stubs in cocoa.messages now named by method signature
  • filter now allocates length of seq, not exemplar.
  • Removed make-assoc in favor of explicit get's.
  • Some of the improvements to FUEL, Factor's emacs mode:
  • Modernize for emacs 24.3
  • Prepare FUEL to be uploaded to MELPA
  • Change font locking and syntax highlighting
  • Make fuel-help work for vocabularies also
  • New minor mode: fuel-autohelp-mode
  • Fix word help to use correct vocabulary using list
  • Variable controlling whether fuel-mode is loaded automatically
  • Fixes to table rendering
  • New libraries:
  • alien.libraries.finder: cross-platform C library finder
  • checksums.fletcher: Fletcher in 16/32/64-bit
  • checksums.murmur: MurmurHash3 in 32-bit
  • checksums.superfast: SuperFastHash
  • checksums.xxhash: xxHash in 32-bit
  • cocoa.apple-script: runner for AppleScript
  • colors.distances: CIE76, CIE94, CIEDE2000, and CMC l:c color differences
  • colors.lab: support for CIE 1976 LAB colors
  • colors.lch: support for CIELCH colors
  • colors.luv: support for CIE 1976 LUV colors
  • colors.ryb: support for RYB colors
  • colors.xyy: support for CIE 1931 xyY colors
  • colors.xyz: support for CIE 1931 XYZ colors
  • colors.yuv: support for YUV colors
  • compression.snappy: bindings to snappy compression library
  • crypto.aes: lookup-table AES implementation
  • cuesheet: parser for CUE files
  • curl: bindings for libcurl
  • editors.atom: support for Atom text editor
  • fftw: bindings to FFTW library
  • gml: support for Generative Modeling Language
  • grouping.extras: helpful words
  • html.entities: escape and unescape HTML5 entities
  • imap: client for IMAP servers
  • io.encodings.utf7: support for UTF7 encodings
  • io.streams.ansi: support for ANSI color streams
  • magic: bindings to libmagic
  • marvel: support for Marvel.com API
  • math.combinators: some convenience words
  • matrices.laplace: adding Laplace expansion
  • math.unicode: implement unicode math symbols
  • pcre: bindings for PCRE
  • python: bindings for Python
  • random.rdrand: random number generator using RDRAND instruction
  • rosetta-code.josephus-problem: solved
  • rosetta-code.metronome: solved
  • sorting.heap: implement Heapsort
  • sorting.quick: implement Quicksort
  • spotlight: adding Spotlight search wrapper for Mac OS X
  • terminfo: parser for terminfo database files
  • tzinfo: parser for timezone files
  • tools.dns.public: adding well-known public DNS servers
  • uu: support for uuencoding and uudecoding
  • yaml: reading and writing the YAML format
  • youtube: downloader for youtube.com
  • wikipedia: support historical events and article printing
  • windows.ntdll: process listing on Windows
  • windows.winmm: to play MP3 files
  • zeromq: bindings for ZeroMQ
  • Improved libraries:
  • arrays.shaped: iteration with indices, mapping operations
  • bson.reader: support reading sequence of BSON objects from a file
  • calendar.format: fix timestamp parsing without a timezone (fixes #861)
  • calendar.threads: support M\ timestamp sleep-until
  • circular: adding circular-loop
  • color-picker: show hex value of color
  • combinators.extras: more words
  • concurrency.combinators: adding parallel versions of cartesian-{map,each}
  • destructors: faster dispose-each
  • dlists: adding push-before and push-sorted
  • dns: support custom DNS server lookups
  • environment: adding with-os-env for using temporary environment variables
  • formatting: performance improvements, added vprintf for runtime formatting
  • google.translate: adding translate-tts
  • graphviz: miscellaneous improvements by @ajvondrak
  • grouping.extras: more words
  • hash-sets: minor cleanup
  • hashtables: minor cleanup
  • help.html: use tools.completions for searching
  • html.parser.analyzer: make find-between* work on nested tags
  • html.parser.printer: better html-text.
  • http.client: versions of http-get and friends that don't check response code
  • infix: adding INFIX:: word definitions
  • interpolate: adding generalized numbered string interpolation
  • io.binary: faster le> and signed-be> and signed>
  • io.binary.fast: generic be> and le> that try to be fast
  • io.directories: adding with-resource-directory
  • io.encodings.string: faster decode and encode for ascii and utf8
  • io.sockets.secure.openssl: fix subject name checks
  • io.streams.byte-array: performance improvements
  • io.streams.random: performance improvements
  • io.streams.string: performance improvements
  • ip-parser: adding ntoa and aton
  • math.bitwise: adding bit-length
  • math.combinatorics: performance improvements, k-permutations
  • math.extras: more words
  • math.factorials: adding factorials
  • math.functions: implement ldexp
  • math.matrices: performance improvements
  • math.ranges: implement sum on range objects
  • math.statistics: fix out-of-bounds in quantiles, more words
  • math.text.english: support ratio, float, complex
  • mirrors: strings can be inspected-sequence (fixes #857)
  • openal.examples: adding play-waveform and play-sine
  • pack: support numbered format strings (e.g., "4ci")
  • random: performance improvements
  • random.mersenne-twister: bug fixes
  • redis: adding hash commands, upgraded to modern protocol
  • semantic-versioning: support for Semantic Versioning 2.0.0
  • sequences: implement sum on iota-tuple objects
  • sequences.extras: more words
  • sequences.product: performance improvements
  • sequences.windowed: performance improvements
  • sets.extras: more words
  • sorting.insertion: performance improvements
  • spelling: minor fixes and performance improvements
  • spider: ignore non-html files
  • system-info: implement system-report. on Linux.
  • tools.deploy.config: specific deploy-directory
  • tools.dns: adding dns-host to lookup from a specific host
  • tools.test: allow testing from command-line
  • twitter: updates
  • units.imperial: more units
  • unix.users: add utility word to find a user's home directory
  • unix.utmpx: support on Linux and fixes on Mac OS X
  • webbrowser: support open-file on pathname objects