Email or username:

Password:

Forgot your password?
588 posts total
Andrew Tropin

It seems make-custom-textual-input-port will solve the problem of intercepting reads from stdin in evaluation thread. It is not in a release version, but is available in guile-next:
git.sv.gnu.org/cgit/guile.git/

Thank you to @wingo for implementing it! :)

#guile #scheme #lisp #guix

Andrew Tropin

New Guile REPL in one minute.

A brief demo of guile-ares-rs (previously known as guile-nrepl) dealing with continuations and infinite recursion.

youtu.be/27Nqj-oTq5U

The source code:
git.sr.ht/~abcdw/guile-ares-rs
github.com/abcdw/guile-ares-rs

#guile #scheme #lisp #guix #clojure #nrepl

Nyoelle

@abcdw Cute
Lisp is always cute, and this also, is mega cute
And nya

Andrew Tropin

What a magnificent work on guile hoot, wasm and Spritely Goblins and a stream about it with @daviwil, Robin, @dthompson, @cwebber:

youtu.be/_29duXYFi8s

#guile #scheme #lisp #wasm

David Wilson

@abcdw @dthompson @cwebber Exciting stuff indeed!

I fixed the broken stream recording with a new upload: youtube.com/watch?v=8LuQtoy9NL

Andrew Tropin

Moving from country to country is similar to reinstalling operating system: you verify if your setup is reliable, self-contained and reproducible.

Andrew Tropin

I come to Turkey tomorrow.
Will be around Istanbul for 1 week, after that I go to Anatlya, Geyikbayiri, Kalkan. If you want to meet - drop me a line.

Andrew Tropin

I can't lock (wait on) mutex inside fiber, because it locks the whole kernel thread, so I've took a condition variable, put it inside atomic box and made a nutex.

The atomic-box-update! implementation is here:
git.sr.ht/~abcdw/guile-ares-rs

#guile #scheme #lisp #programming #concurrency

Andrew Tropin

Asyncronous programming feels like a quantum mechanics, you can't know the state of a particular object without touching it.

#programming

Rasmus Lindegaard

@abcdw well, it was fun figuring out how to write tests for it the first time 😁

Andrew Tropin

How to delimit an undelimited continuation?

I want something like this to work without going into infinite loop (I don't want call/cc to capture context outside of quoted code):

(begin
(define (my-eval exp)
"Maybe some other eval implementation here?"
(primitive-eval exp))

(my-eval `(define kont #f))
(my-eval `(+ 1 (call/cc (lambda (k) (set! kont k) 5))))
(my-eval `(kont 41)))

#guile #scheme #lisp

How to delimit an undelimited continuation?

I want something like this to work without going into infinite loop (I don't want call/cc to capture context outside of quoted code):

(begin
(define (my-eval exp)
"Maybe some other eval implementation here?"
(primitive-eval exp))

(my-eval `(define kont #f))
(my-eval `(+ 1 (call/cc (lambda (k) (set! kont k) 5))))
(my-eval `(kont 41)))

Andrew Tropin

Text files don't take much space. Meanwhile 12GB mail directory: 🤔

nthcdr

@abcdw It's all the mime-encoded pantomime videos you've been receiving...

Andrew Tropin

Ordered a new 2tb storage for my laptop. It means that we will test the reproducibilty of my rde config and overall installation experience of rde soon :)

For quite some time, I didn't have enough space to maintain VMs, gnu/store and couple of movies at the same time, so I had to cleanup and GC often. Soon it should become much more comfortable to work and live.

#guix #rde

Andrew Tropin

For people interested on how much storage you need for comfortable work on systems powerd by GNU Guix: I have around 300GB total on all btrfs subvolumes and while it's manageable, it feels quite tight for my everyday research and development duties.

#guix #rde

Andrew Tropin

Fun fact: After calling `join-thread`, you still can get #f from `thread-exited?`

#guile #scheme #lisp

graywolf

@abcdw That is... weird. Is that a bug? Or an expected behavior?

Andrew Tropin

I have half an hour trip to climbing gym and back 3 times a week. Not to waste this time I take my laptop with downloaded materials with me and watch courses.

Previously it was OCaml course, now it is Advanced Compilers course:
cs.cornell.edu/courses/cs6120/

#llvm #gcc #compilers #scheme #racket #guile #lisp #clojure

blake shaw 🇵🇸

@abcdw score, this one is going in my bookmarks, even if I'm admittedly not prepared for advanced compilers.

Andrew Tropin

How about completions in guile-nrepl?

Drafted it in a few minutes.

But it seems I need to start working on a client as well to make it more capable (for example to show completion types like procedures, symbols, modules).

#guile #scheme #lisp #clojure

Olical

@abcdw oh nice! Might be a great candidate for conjure, the guile over stdio support we currently have isn't great. github.com/Olical/conjure

Andrew Tropin

Me, trying to explain how guile-nrepl utilizes guile-fibers for asyncronous interruptible evaluation.

BTW, I've commited and pushed all the recent local changes. It's not ready for everyday usage, but If you are curious and want to try it out type `make server` and use an nrepl client of your choice (monroe or rail for example).

git.sr.ht/~abcdw/guile-nrepl
github.com/Sasanidas/Rail

#guile #scheme #lisp #guix #emacs #rde

Bahman M.

@abcdw Very cool! And 💯 for writing a Makefile!

Bahman M.

@abcdw Since I'm quite passionate about Make and what it can do, do you mind if I submit a tiny PR RE some minor improvements to the Makefile? 😅

Andrew Tropin

Post about rde on lobste.rs, got a link to it in personal messages, IDK how to use it, so I will just share it :)

lobste.rs/s/xswrjc/rde_tools_f

#rde #guix #guile #scheme #lisp #emacs

Andrew Tropin

Is it Modern Scheme REPL?
- Interruptible evaluation in remote Scheme process? ✔
- Immediately seeing stdout and stderr of remotely evaluated expression? ✔
- Readable exception messages? ✔

A couple things still bother me:
- How to intercept access to stdin (current-input-port)? Need to make custom ports?
- Evaluation happens in a fresh thread every time: 1. constantly creating new threads is not optimal 2. it doesn't allow to invoke previously saved continuation.

#guile #scheme #lisp #emacs

Is it Modern Scheme REPL?
- Interruptible evaluation in remote Scheme process? ✔
- Immediately seeing stdout and stderr of remotely evaluated expression? ✔
- Readable exception messages? ✔

A couple things still bother me:
- How to intercept access to stdin (current-input-port)? Need to make custom ports?
- Evaluation happens in a fresh thread every time: 1. constantly creating new threads is not optimal 2. it doesn't allow to invoke previously saved continuation.

dave

@abcdw yeah it would be nice to have explicit control over which thread is performing the evaluation like guile's cooperative repl. that repl was designed to integrate into async event loops (though it uses polling whereas a more modern design would use async i/o) where the evaluation often needs to happen in a "main" thread, not the thread of the repl client.

Go Up