Readit News logoReadit News
qwertyuiop924 · 10 years ago
Guile is my second favorite scheme (after chicken). It's semi-R6RS, but still feels nice, and still feels scheme-y. It's nicely practical, and it's one of the rare Scheme implementations to support pthreads. Also, it has a lot of good libraries (behind Racket and Chicken, but better than many schemes), and an FFI that's actually pretty nice, but encourages writing a wrapper around the library that's more than paper-thin. It also embeds well, with it and Chibi being pretty much the only game in town on Scheme embedding.

I love it, just not as much as I love Chicken.

na85 · 10 years ago
What is the scheme equivent of ANSI C or Common Lisp?

By that I mean what is the default/main/vanilla scheme?

qwertyuiop924 · 10 years ago
Scheme is a standard. The most common standards for Scheme are R5RS, the controversial R6RS, and R7RS, which hews closer to R5RS. While there are reference implementations, there isn't really a vanilla implementation, as even the references add their own tweaks. Here's why:

Until R6RS, having a "vanilla" scheme wasn't practical: the scheme standard is minimalist, and excludes things like binary IO, modules, networking, OO, etc, although it does provide the tools to make your own module/OO system if you want. Writing portable scheme is almost impossible, and frowned upon.

R6RS tried to extend the language and stdlib, so that writing portable scheme was possible. It was criticized for being overly complex, and for forgoing common SRFIs (informal standards that can be implemented across schemes), instead coming up with its own solutions to the same problems. Its acceptance was mixed. Guile implements some of it, but there are few full implmentations of the standard. The lack of acceptance for R6RS is sometimes seen as one of the catalysts to PLT Scheme casting off the anchors of the Scheme standard, and renaming itself Racket, which was already starting to happen, as PLT steadily deviated from the standard.

R7RS was an attempt at a compromise: it provided the "small" language, already published, which is more based upon R5RS, and adds a module system and a few other extensions. The "large" language, still in development, will provide a large stdlib for doing Real Work. It will, however, notably lack a few things, such as an FFI, so while portable scheme will be possible, not all code will be portable (nor, I think, will all code ever be). Thus far, it seems to be going fairly well, with CHICKEN and Guile, some of the most popular scheme implementations, planning to support it.

Probably the closest thing to a vanilla scheme is Chibi Scheme, the reference implementation of R7RS. It's small, lightweight, and designed for static linking and embedding, like Lua. It has its extensions, of course, but they're fairly minimal.

davexunit · 10 years ago
There isn't really any such thing in the Scheme world. There are Scheme standards, but it's best to think of Scheme as a family of distinct, but closely related, languages instead.
LukeShu · 10 years ago
Vanilla scheme is specified in "Revised⁷ Report on the Algorithmic Language Scheme" (R7RS, 2013); or the older R6RS (2007) or R5RS (1998).

There was a 1990 IEEE standardization of scheme (IEEE Std 1178), and last revised in 1995. But it isn't recognized as the canonical vanilla scheme like RnRS is.

hood_syntax · 10 years ago
Probably MIT Scheme, but afaik it's not suitable for production applications since it's a tool for teaching. It is the 'vanilla' Scheme though
FlorianOver · 10 years ago
I really admire Andy Wingo for all his great work. Thank you and the guile team for the the outstanding results!
AceJohnny2 · 10 years ago
I need to check out Guile's suitability for embedability in applications. Traditional suggestions have been TCL, Python, and Lua. For Guile, the conversation always focuses on FSF and Emacs, but that's boring. Has anyone [other than FSF/Emacs] used it as an application extension language? If so, what's your experience? What's the overhead? memory usage?

Ideally, I'd like to use it on embedded systems/firmware (as opposed to embedded in an PC application), but I'm assuming it's either too memory-intensive or requires too much platform support, and certainly the license won't fit :(

shakna · 10 years ago
Guile's lib you have to link against is 2.5mb, and much of the object code for any Scheme you end up compiling is 0.5-3mb. That was enough to get Guile disqualified from our project.

I never managed to get it running on anything with less than 16mb of RAM, but that might have been my own C wrapper, YMMV.

amirouche · 10 years ago
This version of Guile makes possible better asynchronous code via https://github.com/wingo/fibers/wiki/Manual (which is the implementation of something similar to Python's async/await)
s_kilk · 10 years ago
Anyone here know of any "real" programs and projects using Guile? Would be curious to hear of any blazing success-stories.
jay-anderson · 10 years ago
Lilypond (http://lilypond.org/). Though since guile 2.0 there's been some friction between the lilypond developers and guile developers. Lilypond is still using guile 1.8. There are periodic threads on the lilypond mailing list asking what the hold up is (I don't recall the reasons at the moment).

Edit: This looks to be the issue: https://lists.gnu.org/archive/html/guile-devel/2016-06/msg00...

tunesmith · 10 years ago
I think the lack of guile 2.0 support was mentioned as one of the main blockers behind full MusicXML import/export support - this was a couple of years ago though, not sure if that's still true.
amirouche · 10 years ago
There is no such big-ish projects using Guile outside projects embedding Guile and guix. There is no wordpress or even framework as powerful and easy to use as Django or Rails. There is no support for https, it's kind of a no-go if you want to access REST APIs from Guile. Cookie support is not good enough. That said, the creator of Artanis reported some success using Artanis in a commercial setting. Outside that there is various free projects in the work, look at Guile homepage or ask on #guile. On my side I am working on search engine named Culturia.
davexunit · 10 years ago
>There is no support for https, it's kind of a no-go if you want to access REST APIs from Guile.

That is not true. While Guile doesn't support HTTPS out-of-the-box, gnutls ships with Guile bindings. Guix is a notable user of those bindings.

sidhu1f · 10 years ago
The GNU Artanis[1] web framework seems interesting...

[1] http://web-artanis.com

nrclark · 10 years ago
GNU Make has a Guile scripting interface, although distros don't usually ship it compiled into their 'make' packages (for whatever reason). On Ubuntu/Debian, you can get it by installing 'make-guile' instead of 'make'.
proaralyst · 10 years ago
I know GDB uses it for plugins.
CJefferson · 10 years ago
Although all the plugins I know of are in Python (including some GNU ones, like nice pretty printing of C++ standard library types from gcc)
sigjuice · 10 years ago
Do you know of any such plugins?
agumonkey · 10 years ago
Guix ? FSMVO "real"
davexunit · 10 years ago
GNU Guix is part of the software deployment process for a pretty complicated speech recognition platform at the company I work for. Thus, I consider it real software.
JohnStrange · 10 years ago
GnuCash is written in C but uses Guile as an extension language.
rhabarba · 10 years ago
Still waiting for Guile Emacs.
ThatGeoGuy · 10 years ago
As of GSoC 2014, I believe Guile Emacs works with only some performance regressions (I believe due to overuse of dynamic scope?). In any case, you can run it today if you wanted to, just follow the process outlined on the wiki [0]. That said, I don't think the Emacs project has fully committed to porting over for various reasons, probably in part because running Guile on some platforms (Windows) is really difficult, and thus would be a problem for users. I'm sure the people in #guile on FreeNode could give a much more detailed answer though, I don't follow the Guile/Emacs thing so closely as I'm mostly a CHICKEN Scheme / Vim user.

[0] https://www.emacswiki.org/emacs/GuileEmacs

amirouche · 10 years ago
There is a recent thread on the mailing list about the subject https://lists.gnu.org/archive/html/guile-devel/2016-09/msg00...
rhabarba · 10 years ago
It's not the language. I don't really like Scheme (I'm more a Common Lisp guy). I would, however, really love to see Emacs without the Emacs Lisp limitations because everything missing from Emacs - at least to me - is performance. Guile looks like a good way to work around that.
davexunit · 10 years ago
If you use GNU Guix, you can install it quite easily:

    guix package -i guile-emacs

qwertyuiop924 · 10 years ago
Vim? Really? Does vim implement the original vi's lisp mode?

I hope it does. The original vi's lisp mode is something I have only seen traditional vi implement thus far, and it's pretty nice.

AceJohnny2 · 10 years ago
Also, from a back-of-the-envelope calculation from the ohloh.net numbers, Emacs has ~1.1M LoC of ELisp.

With that kind of number, you're pretty much guaranteed some elisp is going to stick around forever (especially considering Emacs' glacial [but improving!] rate of change).

0xCMP · 10 years ago
After figuring out what that'd mean, I'm pretty excited for this too.

Seems like it's not to far from being stable (if not perfect performance wise).