Hacker News new | past | comments | ask | show | jobs | submit login

Anyone using Guile for their projects? Any feedback on their experience with it?

I only know Scheme from reading SICP and enjoyed Clojure but hated the java/JVM part of it. I currently use Erlang for when I need concurrency/performant backends. But I'm not totally satisfied with it (for ex: the weak type system and records).

Edit: oh looks two programs I use all the time are written in Guile: GNU Make and WeeChat https://en.wikipedia.org/wiki/GNU_Guile#Programs_using_Guile




I'm using Guile for Ao, a Scheme-based tool for solid modeling: https://mattkeeter.com/projects/ao (previous on HN at https://news.ycombinator.com/item?id=12319406)

It's been a generally good experience. Scheme is fun, and Guile is a fine implementation. I'm not experienced enough to be pushing its limits – the only unusual corner I've explored is the C FFI, which is quite nice.

My only complaint is the consistency of Guile's documentation. It's generally of high quality, but there are corners that are completely undocumented – I've had a few cases where I had to dig into the implementation to figure out how to do something.


Alright, total stream of thought here:

Guile is cool, if possibly immature.

To this day, the largest project I've done in Guile was the entirety of the exercises short of Chapter 5 in SICP, wrote unit tests for the interpreter and the 'Prolog' implementation, the whole lot. All told I generated approximately 10KLOC of Guile code, some 20% of it using features like GOOPs, threading, dynamic-unwind and so on. It was largely a positive experience and I am really glad I read ahead and implemented a few things as GOOPs classes rather than used the OOP system described in the Book (particularly for the Constraint Solver!)

As part of this, I did run into some faulty code generation (inappropriate optimization) on the master branch while completing an early Chapter 4 exercise: "This code could do multiple things if we apply different models of an idealized computer language (each of which was advocated by 'Susan' and 'Bob' in typical SICP fashion)", I wrote an implementation inside my guile interpreter that got an unusual answer and asked the channel about it and everyone got to the bottom of it fairly quickly.

Speaking of which, Guile has a community of absolutely rabid fans all over the world and so the support in #guile is absolutely phenomenal, people like ijp and mark_weaver are both true 31337s and always can be relied on to offer sage advice.

You've brought up it's utility as a GNU extension language, and although I feel it's public documentation is not given a fair shake in the important arenas like GDB scripting, it is tremendously useful in this capacity. Of course, as an extension language itself, it excels. Excellent exposure and interaction with the bare-metal, good parallel & concurrent primitives (although they are more 'traditional', taking after the proud line of Pthreads than `link' or send/recieve in Erlang). It is quite large to statically link into your binary in comparison to other languages however, so be careful there.

Weechat itself is written in C, but it does have Guile extensions (and unfortunately I may be the only person in the world to take advantage of this while writing an extension however https://github.com/zv/weechat-gateway-replacer ).


The biggest piece of software using Guile I know of is GNU Guix[0], a functional package manager and declarative GNU/Linux distribution. It has dozens of contributors actively working on it.[1]

I contribute to Guix, but I also have my own projects[2] written in Guile. The only software that other people actually use, however, is Haunt, the static site generator that renders my blog (everyone needs to roll their own, right?)

[0] https://gnu.org/s/guix

[1] https://www.openhub.net/p/gnuguix

[2] https://dthompson.us/projects.html


I don't have much experience with Guile, but AFAIK both programs you mentioned are written in C, but support Guile in one way or another.

GNU Make supports Guile as an embedded extension language [0] and WeeChat supports Guile as a scripting language for writing plugins [1].

There are a few other apps mentioned on the Guile website [2] and more on their Libraries page [3].

[0]: http://git.savannah.gnu.org/cgit/make.git/commit/?id=c992c4d...

[1]: http://dev.weechat.org/post/2011/10/27/New-plugin-Guile

[2]: https://www.gnu.org/software/guile/#apps-using-guile

[3]: https://www.gnu.org/software/guile/libraries/


I started using guile at work, since I like scheme, and guile was the scheme that was available without installing anything new.

I prototype loads of small tools in guile, and some of the prototypes "stick" since they exceed expectations. The biggest one is a macro system for pascal that expands recursive macros and unrolls loops, generating _lots and lots_ of code.

My scheme implementation of choice is chicken, since they have a package manager with quite a lot of packages, but I really enjoy using guile. Really looking forward to the new 2.2 branch. We are using that in production, and we probably hit a sweet spot where the magic optimization dust gathered the most. We got almost 2x improvement just by switching.


I'm using Guile for a simple web interface to a scientific pipeline. Users upload a file, which is queued up in Redis, processed by a worker which spawns the pipeline.

It's nice to be able to use a flexible and simple language like Scheme for tools like this. The HTML documents are written in SXML, so it's all S-expressions.

(I'm not a fan of Python, the obvious alternative for things like this.)


I'm not too familiar with Guile and have been away from Clojure world for a while but from what I remember people compared CLJ to Racket which seemed to get a lot of stuff before clojure (IIRC, a lot of the stuff was ported over like type annotations). Might be worth looking in to.

https://racket-lang.org/


Neither Make nor WeeChat are written in Guile. They're both written in C.

They do, however, use Guile as an extension language.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: