
Another student asked me this same exact question tonight! Which has then motivated me to take screenshots of this convo so they don’t disappear to history. Saved now and transferring to blog.

Got a little more time to whack away at this: https://racket.slack.com/archives/C06V96CKX/p1554125931119100


Which seems to work but also I don’t really know what I’m doing.

I can’t seem to show you a URL for the public project that shows you “it works”. Unlike Travis CI, it seems you need to be logged in to see it?

still finds Circle CI confusing

@greg it’s not just you, their entire docs site is disorienting and confusing to me too

Figuring out the very basic config took me a very long time

@greg you could reduce the amount of job declarations by making the version a parameter, something like this (untested): jobs:
racket:
parameters:
version:
description: Racket version
type: string
<<: *shared
docker:
- image: jackfirth/racket:<<parameters.version>>

And then the workflows
section becomes something like this: `jobs:
- racket:
version: 6.2
- racket:
version: 6.4
...

Note that you need to change to version: 2.1
to enable parameters
and other “reusable config” features - see https://circleci.com/docs/2.0/reusing-config/#section=configuration

I hear there’s something called “orbs” that you can use to publish reusable bits of circleci config but I really have no idea how that works

Yes - it’s not too bad. I just wrote my first orb: https://github.com/zzamboni/leanpub-orb

(not Racket related I’m afraid)

It’s basically a config file with jobs
and commands
sections, plus some metadata


@mflatt Just another quick ping, do you know who I responsible for Racket’s OpenGL context on windows?

(Asking you because git blame shows you touched it last.)

I think I implemented it long ago, but I haven’t looked in a while

Ah, I see.

Unfortunately it doesn’t work for intel graphics chips. :disappointed:

(On windows)

Unfortunately, Ben Chung and I, have made relatively little progress in tracking down the problem.

@greg I’ve also had good experiences asking for help in the CircleCI forums (https://discuss.circleci.com), I’ve always received useful answers from CircleCI employees.

@diego Thanks for all the tips!! I’ll check it out probably tomorrow. (My brain’s API seems to have a daily rate limit for build infrastructure ████ery :smile:)

has █ chars ready for tomorrow

Glad to help. I’ve been deep in CircleCI-land lately, so I’d be happy to help if I can.

@greg "████ery"….I see your brain is also running low on characters too. :stuck_out_tongue:

@mflatt Does the determinism guarantee about equal-hash-code
’s result on read
-able values still hold even if the value isn’t interned? That is, can I rely upon equal-hash-code
always producing the same value for two strings that are composed of the same character sequence, even if they don’t exist at the same time and are not interned? Or would I have to call datum-intern-literal
first in order to get the guarantee?

As far as I can tell, the property holds today for non-interned strings, at least on 3m. But I don’t know if that’s implied to be guaranteed.

Yes, the guarantee is meant to hold

Okay, thanks!

By “don’t exist at the same time”, do you mean within the confines of a single run of the racket VM or do you mean across all eternity?

I mean “across multiple runs of the Racket VM”, but not across all eternity—I don’t care if they’re different on different machines or with different versions of Racket.

The documentation is a little vague on how strong the guarantee is with respect to those differences, though.

The hash code sometimes changes across versions, and it changes across VMs.

I remember it changed a few years ago because I’d written a test that assumed an order: https://github.com/greghendershott/flexpr/issues/7

@fkingtop has joined the channel

https://docs.racket-lang.org/reference/__top.html#%28form._%28%28quote._~23~25kernel%29._~23~25top%29%29 I’m confused about the usage of #%top
. why the result is 5
instead of 12
?

I don’t understand that, either.

Also, that’s in a REPL at the top-level. In a module, e.g. (module m racket/base
(define x 42)
(let ([x 5]) (#%top . x)))
the result is an error: top.rkt:3:24: x: unbound identifier
in: x
context...:
#(536 local) #(537 intdef) #(538 local) #(539 intdef) [common scopes]
matching binding...:
#(x #<module-path-index='m[1578]> 0)
[common scopes]
matching binding...:
local
#(536 local) #(537 intdef) #(538 local) [common scopes]
common scopes...:
#(9 module) #(411 module m)
location...:
top.rkt:3:24
context...:
do-raise-syntax-error
for-loop
finish-bodys
for-loop
finish-bodys
lambda-clause-expander
for-loop
loop
[repeats 2 more times]
module-begin-k
expand-module16
expand-capturing-lifts
temp118_0
temp91_0
compile15
temp85_0
...

Looks like a bug, the old documents say it should be 12 https://download.racket-lang.org/releases/6.12/doc/reference/__top.html