krismicinski
2019-4-17 07:29:10

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.


greg
2019-4-17 19:42:08

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



greg
2019-4-17 19:42:41

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


greg
2019-4-17 19:43:24

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?


greg
2019-4-17 19:43:40

still finds Circle CI confusing


notjack
2019-4-17 20:14:35

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


notjack
2019-4-17 20:15:11

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


diego
2019-4-17 20:40:23

@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>>


diego
2019-4-17 20:41:47

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


diego
2019-4-17 20:45:43

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


notjack
2019-4-17 20:48:34

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


diego
2019-4-17 20:52:21

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


diego
2019-4-17 20:52:40

(not Racket related I’m afraid)


diego
2019-4-17 20:54:09

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



leif
2019-4-17 20:58:25

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


leif
2019-4-17 20:58:53

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


mflatt
2019-4-17 20:58:54

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


leif
2019-4-17 20:59:00

Ah, I see.


leif
2019-4-17 20:59:21

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


leif
2019-4-17 20:59:31

(On windows)


leif
2019-4-17 20:59:53

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


diego
2019-4-17 21:21:06

@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.


greg
2019-4-17 21:28:09

@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:)


greg
2019-4-17 21:30:11

has █ chars ready for tomorrow


diego
2019-4-17 21:31:55

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


leif
2019-4-17 22:45:41

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


lexi.lambda
2019-4-17 23:55:57

@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?


lexi.lambda
2019-4-17 23:56:39

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.


mflatt
2019-4-17 23:56:41

Yes, the guarantee is meant to hold


lexi.lambda
2019-4-17 23:56:51

Okay, thanks!


notjack
2019-4-18 01:07:24

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?


lexi.lambda
2019-4-18 01:11:29

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.


lexi.lambda
2019-4-18 01:12:29

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


mflatt
2019-4-18 01:50:15

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


greg
2019-4-18 03:03:26

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
2019-4-18 03:22:43

@fkingtop has joined the channel


fkingtop
2019-4-18 03:48:41

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?


greg
2019-4-18 06:05:03

I don’t understand that, either.


greg
2019-4-18 06:06:33

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 ...


343519265
2019-4-18 06:27:57

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