I am pleased to announce the release of Haunt version 0.2.1. This release features a new reader for the Markdown format via guile-commonmark as well as small improvements to the Atom feed generator and documentation.
I am pleased to announce the release of Haunt version 0.2.1. This release features a new reader for the Markdown format via guile-commonmark as well as small improvements to the Atom feed generator and documentation.
I am pleased to announce the release of Haunt version 0.2. This release features new readers for the Texinfo and Skribe markup formats, an Info manual, small improvements to the Atom and blog builders, and bug fixes.
I’ve been working with Ruby professionally for over 3 years now and
I’ve grown frustrated with two of its most popular development tools:
RVM and Bundler. For those that may not know, RVM is the Ruby version
manager and it allows unprivileged users to download, compile,
install, and manage many versions of Ruby instead of being stuck with
the one that is installed globally by your distro’s package manager.
Bundler is the tool that allows developers to keep a version
controlled “Gemfile” that specifies all of the project’s dependencies
and provides utilities to install and update those gems. These tools
are crucial because Ruby developers often work with many applications
that use different versions of Ruby and/or different versions of gems
such as Rails. Traditional GNU/Linux distributions install packages
to the global /usr
directory, limiting users to a single version of
Ruby and associated gems, if they are packaged at all. Traditional
package management fails to meet the needs of a lot of users, so many
niche package managers have been developed to supplement them.
I am pleased to announce the first alpha release of Haunt, yet another static site generator. Does the world really need another one of those? No, but Haunt is special because it is written in Guile Scheme, a clean and elegant Lisp dialect, which allows users to compose their websites using functional programming techniques. Using a general-purpose, extensible programming language to build websites allows Haunt users to view their website as not just mere data, but a program. Haunt empowers the user to build the abstractions they need to make a great static website without getting in the way.
GNU Guile provides modules for working with XML documents called SXML. SXML provides an elegant way of writing XML documents as s-expressions that can be easily manipulated in Scheme. Here’s an example:
If you’re a software developer, then you probably know very well that
setting up a project’s development environment for the first time can
be a real pain. Installing all of the necessary dependencies using
your system’s package manager can be very tedious. To "solve" this
problem, we have resorted to inventing new package managers and
dependency bundlers for pretty much every programming language. Ruby
has rubygems and bundler, Python has pip and virtualenv, PHP has
composer, node.js has npm, and so on. Wouldn’t it be nice to instead
have a single package manager that can handle it all? Enter
GNU Guix, a purely functional package
manager and GNU/Linux distribution. Using Guix, you can easily create
a development environment for any software project using the guix environment
tool.
Guile-2D has been the working title for my game engine written in Guile Scheme for over a year now. The name has become limiting since I realized that it wouldn’t be much extra work to support 3D graphics. After much indecision, I’ve finally decided on an official name: Sly. I think it’s a great name. It’s short, easy to type, and slyness is one of the definitions of “guile”.
Guile-2d provides a dynamic environment in which a developer can build a game incrementally as it runs via the Guile REPL. It’s nice to be able to hot-swap code and have the running game reflect the changes made, but what about the game data files? If an image file or other game asset is modified, it would be nice if the game engine took notice and reloaded it automatically. This is what guile-2d’s live asset reloading feature does.
Last month, the GNU Guile project celebrated the 3rd anniversary of its 2.0 release with a hacker potluck. Guilers were encouraged to bring a tasty hack to the mailing list to share with everyone. My dish was a simple functional reactive programming library.
The next release of GNU Guile, 2.0.10, is to be released “real soon
now”. My contribution to this release is the new (system repl coop-server)
module. This module introduces a useful variant of the
REPL server that I’ve named the “cooperative” REPL server. It is
cooperative because it can be integrated with single-threaded programs
without the thread synchronization issues present in the ordinary REPL
server.