
Okay, great. I’ll investigate more carefully and then comment.

On a bare bones system where I am building racket I am seeing: raco setup: --- building documentation ---
raco setup: docs failure: setup: install SQLite to build documentation

Why is sqlite necessary to build the docs?

@pocmatos the documentation system uses sqlite for cross references

@samth ah! ok. understood. thanks.

I’ve found information on creating distributions, but is there a page that lists the tools that are used during a build?

@paul what kind of tools (and which build) do you mean?

Building Racket in my cloned repository. There must be a list of tools required, such as a C compiler.
Ah, perhaps if I just want to modify and test one Racket code module, I don’t need to do a complete build. Is there a discussion of how to work on a module?

@paul it depends on the platform, but I don’t think there’s a list of tools written down. It’s a fairly standard set of compilation dependencies.

As for a single module, it really depends what package the module is part of. https://blog.racket-lang.org/2017/09/tutorial-contributing-to-racket.html parts (2) and (3) cover the differences between whether it’s part of a package that’s in the racket
repository, or in some other repository.

Yes, that is where I got the idea that I have to build Racket in order to work on the language. But one person’s “fairly standard set” is another person’s installation list. :sunglasses: I’ll set aside a day to build the system. Meanwhile, I can comment on issues after investigating them. Thanks!

@mflatt I don’t understand why this program doesn’t have a continuation barrier error: (let ([t #t])
(let ([v (list (call/cc (lambda (k) k)))])
(if t
(begin (set! t #f)
(call-with-continuation-barrier
(lambda ()
(list
((car v) 'bye)))))
v)))
It seems like when we install k
, it’s removing a barrier and replacing it with a continuation that is not a tail of the current continuation (in particular, the replacing continuation has a let binding and a list
creation that aren’t in the current continuation at that point).

Don’t continuation barriers only protect “downward jumps” (that is, continuation invocations that would install new barriers), and that example doesn’t ever capture a continuation with the barrier in place? But maybe I’m misunderstanding the example.

@lexi.lambda the docs say “It may remove continuation barriers only through jumps to continuations that are a tail of the current continuation.” which seems to disallow what’s going on there

Yes, I think the documentation is wrong when it says “may remove continuation barriers only through jumps to continuations that are a tail of the current continuation.”

(That might have been true once. More likely, it was intended to be true once, not really true, and not a good idea.)

Interesting, I never actually noticed that sentence at all (and am not entirely sure what it would mean, but I don’t feel like I have a very good intuitive handle on delimited continuations in general, so that doesn’t mean very much).

@paul If you’re on Linux I can give you a pretty good list of deps. From someone who always builds it based on docker image for debian:stable-slim I know what’s needed.

@abmclin Thanks for the presentation with @mflatt on racketcs. That’s a really good one. Was that a recent conference? Doesn’t look like racketcon though.

@pocmatos I believe it was at the Scheme Workshop which was concurrent with racketcon at the same location

Thanks!

Ah, if I go to youtube, it does say it in the video description. Shame these presentations don’t get more exposure: https://www.youtube.com/channel/UCoKRhx2TCYTX4dils7-eAJw

agreed, there’s quite a few fascinating presentation topics at that workshop

@pocmatos Thanks, but I’m on Windows. I figure I’ll just fire up a build and watch the craziness break loose.

Sorry @paul can’t help on Windows.

@paul I build Racket often on Windows. It’s easy to do if you have Visual Studio installed

I think the current Racket codebase requires Visual Studio 12 or 13. The most recent Visual Studio is not yet supported

alternatively you could try building using MinGW tool suite which supports Unix style building for Windows, the instructions are in INSTALL.txt

Is http://bugs.racket-lang.org\|bugs.racket-lang.org inaccessible now? I would like to look at an old PR but just get a login screen. (I also don’t know who actually manages that site, or who ever did… maybe @mflatt or @samth know?)

@lexi.lambda I’m in charge of that site, but it shouldn’t be inacessible

@samth If I go to http://bugs.racket-lang.org/query/, I just get a login screen.

Yes I see that too

it’s working with my login, but that shouldn’t be needed

VS 2017 is now supported

@samth Is there some way I can see the details of PR 13085?

the relevant bit is: The documentation for continuation barriers seems to suggest that
the removal of a barrier via a control operator is always okay, but
that the addition of a barrier is not allowed. However, the
following snippet seems to be a counterexample:
#lang racket
(define f
(call-with-continuation-prompt
(lambda ()
(call/cc (lambda (k) k)))))
(call-with-continuation-prompt
(lambda ()
(call-with-continuation-barrier
(lambda ()
(f 5)))))
`f` is an abortive continuation from `call/cc`, which will just
remove the single barrier inside the second prompt. It produces this
error though:
continuation application: attempt to cross a continuation barrier
Is there another barrier being inserted somehow by this example
that causes it to fail?
The relevant documentation snippet says:
Specifically, a continuation can be replaced by another only
when the replacement does not introduce any continuation
barriers (but it may remove them).

Ah, so there wasn’t any further discussion about what the correct behavior is, the documentation was just updated (possibly incorrectly) in an attempt to describe the behavior at the time?

@mflatt then said: I think the solution here is to fix the documentation. In the
implementation, a barrier can be removed only though a jump to a
continuation that is a tail of the current continuation.
And then @asumu closed it with this change: https://github.com/racket/racket/commit/27aa999446

Aha, thanks! It does look like your program does, indeed, produce an error on old versions of Racket, so this commit mflatt mentioned probably did change the behavior: https://github.com/racket/racket/commit/544b7a3d53966f58a4d4970ac882a748a357363e

I was mostly just curious. :)

no problem

Awesome, that’s good to know

@abmclin I’ll go the MinGW route. Thanks for pointing out INSTALL.TXT.

Question for anyone: When I respond to an issue at GitHub, does the appropriate person get notified?

@paul in general, yes

There are boolean?
, null?
, void?
, etc., but eof-object?
. Is there a reason for the -object
? I notice that Heresy provides eof?
.

I think it’s to avoid confusion with ports that are at the end of file, but mostly it’s historical

I am following the “Fear of Macros” article and am looking at > (define-syntax (our-if-v2 stx)
(define xs (syntax->list stx))
(datum->syntax stx `(cond [,(cadr xs) ,(caddr xs)]
[else ,(cadddr xs)])))
What is the role of the commas? Doesn’t work without them.

?? unquote ??

@jxxcarlson a comma is an abbreviation for unquote
which only works with quasiquote
which is also abbreviated with a backtick. It’s an effective way to assemble arbitrary s-exps out of values. You sometimes see it used to create syntax pieces.

Ah — ok! I understand now. Thanks!!