tracy
2020-8-6 07:53:45

@tracy has joined the channel


tracy
2020-8-6 07:54:03

Hello!


tracy
2020-8-6 07:54:04

:wave:


ego
2020-8-6 08:42:39

a couple of days ago this worked: raco pkg install --binary --no-docs sql but today I get: root@81a47c27c53a:/# raco pkg install --binary --no-docs sql Resolving "sql" via <https://download.racket-lang.org/releases/7.7/catalog/> Resolving "sql" via <https://pkg-build.racket-lang.org/server/built/catalog/> Downloading <https://pkg-build.racket-lang.org/server/built/pkgs/sql.zip> raco pkg install: package content is not compatible with the requested conversion package: sql requested conversion: binary package content: built content for version: 7.8 I am working inside the racket/racket:7.7 docker image

Do I interpret this to mean that --binary is only available for the latest 7.8 Racket version?


laurent.orseau
2020-8-6 08:52:01

That explains a lot! Ok, so indeed this requires modifying the compiler to be aware of continuation marks. I thought this was already kind of automatic (i.e., magical).


ego
2020-8-6 08:53:47

Or a more general question about raco pkg install… I’m working on my own package which has sql as a dependency. Since my package is currently “source” only, when I install my package I think it installs sql as a source package as well, because it installs all the build-deps of sql, and the build-deps of those deps… which is a lot of stuff that’s irrelevant to using the library.

Is there a way to control this behaviour?


laurent.orseau
2020-8-6 08:54:41

This is explained in words here, but was this proven formally elsewhere?


notjack
2020-8-6 10:08:47

Yes, --binary is only available for whatever version the package catalog build server uses, which is usually the latest released version. I haven’t gotten around to adding the 7.8 docker image yet, I will eventually. If you’d like to fix the issue right away, send a pull request to https://github.com/jackfirth/racket-docker\|https://github.com/jackfirth/racket-docker that adds 7.8 to the list of versions in the build.sh script. There’s other pull requests for previous versions that you can copy off of.


notjack
2020-8-6 10:09:11

not as far as I know, unfortunately


samth
2020-8-6 10:59:36

Was what proven formally?


samth
2020-8-6 10:59:45

But probably the answer is no.


samth
2020-8-6 11:00:34

The most formal treatment of continuation marks is in John Clements’ papers and dissertation about them


laurent.orseau
2020-8-6 11:34:53

Thanks, I should take a look at John’s papers then (really just out of curiosity). The what is “a modification of the optimizer to incorporate continuation marks such that the new optimizer provably preserves tail recursion and most importantly the equivalence of the program’s outputs and return values, depending on the application context (assuming the old optimizer does that already of course)”. It just seemed to me that it shouldn’t be too difficult to prove (in Redex probably?), and the above text seems to hint at such a proof.


laurent.orseau
2020-8-6 11:37:14

(and again, I currently don’t have the tools to understand all the formalism, not to mention judging them, so it’s just that I’m curious about the extent of what can be dealt with formally)


laurent.orseau
2020-8-6 11:44:15

laurent.orseau
2020-8-6 12:12:11

I just made a #theory channel in case anyone is interested.


laurent.orseau
2020-8-6 12:13:16

The purpose is to avoid discussing abstract matters in the general channel, which could discourage some new ‘normal’ users


raphael.forment
2020-8-6 13:45:25

@raphael.forment has joined the channel


samth
2020-8-6 13:59:29

Definitely no formal proofs were done about the chez optimizer. What that text means is that Matthew and Kent added some checks in the optimizer to avoid disturbing tail positions unless the optimzer knows that it doesn’t matter.


laurent.orseau
2020-8-6 14:02:33

I see, thanks.


sorawee
2020-8-6 15:51:07

Perhaps the thing that should be done is adding examples


laurent.orseau
2020-8-6 15:52:00

I think there’s an introduction on how to read these grammars somewhere in the guide? Not sure though


laurent.orseau
2020-8-6 15:52:42

The problem here I suppose is that if you don’t know about this subtlety, you won’t know that you need to look for some information somewhere



sorawee
2020-8-6 16:00:26

But I mean, that won’t really help much


laurent.orseau
2020-8-6 16:03:20

Indeed. I thought there was a better example somewhere, but maybe I’m misremembering. Could be worth adding a good example then


capfredf
2020-8-6 17:21:49

@mflatt I made some changes to the expander. Following the instructions from src/README.txt, I ran make in racket/src/expander/, but got open-output-file: error opening file path: /Users/capfredf/code/racket/racket/src/expander/../../src/racket/src/startup.inc system error: No such file or directory; errno=2


samth
2020-8-6 17:23:06

I think there’s a path wrong in the Makefile post chez-as-default


mflatt
2020-8-6 17:25:44

Yes, the racket in that path should be bc. Also, the instructions need to be updated to say to make in racket/src/cs to rebuild .scm files.


mflatt
2020-8-6 17:26:09

I can make those improvements, but later today.


capfredf
2020-8-6 17:26:41

Got it. Thanks!


samdphillips
2020-8-6 18:16:45

We’ve talked about this before. It sure would be nice to have binary packages for a couple versions back. Perhaps someone who is hosting an alternative catalog could possibly help support that (maybe they already are?) @popa.bogdanp?


ego
2020-8-6 18:34:20

I guess it doesn’t matter much, just seems unnecessary

maybe fetching build-deps of deps should be a special case you have to ask for?


capfredf
2020-8-6 19:09:09

@mflatt I added print expressions, say (printf "hello") , to the beginning of the function eval in expander/eval/main.rkt, or to several places I thought were the possible entrance of eval. I thought one of the debug messages would show up every time I ran an expression at REPL, but none of them did. I think I am misunderstanding how an expression is evaluated internally……


mflatt
2020-8-6 19:27:00

Adding a printf in eval of expander/eval/main.rkt should indeed be noisy — lots out printouts while making the expander itself with make, for example, and make demo should produce failures in the sanity-checking demos. But you do mean (printf "hello\n") or something that includes a newline (to trigger buffer flushing), right?


capfredf
2020-8-6 19:35:13

Yes, I added a newline to each of those messages and some of them, like the one I added to eval , popped up during make under src/cs


capfredf
2020-8-6 19:45:24

a quick question: why does making the expander call eval? do we run racket program to schemify the expander?


mflatt
2020-8-6 19:50:31

The expander is used to expand itself when you make.in src/expander. The schemify layer is used when you make in src/cs, but not for BC.


mflatt
2020-8-6 19:51:00

The expander is also used to expand itself when you make in src/cs.


mflatt
2020-8-6 19:53:22

But if you’re running make in src/cs, you also make in src/build/cs/c or run make or make cs from the repo checkout top level, right? (One of those is needed to actually rebuild racketcs or racket.)


greg
2020-8-6 20:11:28

Not to bike shed, but, I feel like the grammar brackets should be italic, as well as a different color.


greg
2020-8-6 20:11:48

That would make them stand out more, for people with “normal” vision.


greg
2020-8-6 20:12:37

Not to mention people who have difficulty distinguishing dark red from black.


popa.bogdanp
2020-8-6 20:14:36

I’ve thought about supporting a couple versions of built packages on Racksnaps but haven’t done it yet because it’s not something I need. One concern there would be storage space because I don’t think built packages across Racket versions would deduplicate well (at all?) under my content-addressing scheme.


laurent.orseau
2020-8-6 20:15:23

What about making them bigger?


mflatt
2020-8-6 20:16:33

I pushed a revised “racket/src/expander/README.txt”. You may have thoughts on how it could be improved.


capfredf
2020-8-6 20:31:04

Ah, I missed out make or make as-is at the top level.


capfredf
2020-8-6 20:32:56

I will take a look at the README.


sorawee
2020-8-6 21:29:30

@greg @laurent.orseau

which one looks better?

Current one, bigger, and italic respectively


sorawee
2020-8-6 21:31:00

@robby and @mflatt might have opinion?


sorawee
2020-8-6 21:35:12

If there’s no objection, I will go with italic. It doesn’t change line height significantly, while look distinctive enough.


robby
2020-8-6 21:35:47

I am sympathetic to the idea that color is fraught but I don’t find the italic brackets beautiful…. that said I don’t really have a strong opinion. As for the problem that motivated this example, maybe a better idea is to change the way new-based constructors print out in the docs to avoid the semantically-different brackets?


robby
2020-8-6 21:36:15

Maybe it could look more like how function calls work, with a default value appearing to mean it is optional?


robby
2020-8-6 21:36:48

Or some other outofband annotation to indicate that one of the arguments was optional somehow.


sorawee
2020-8-6 21:39:47

> Maybe it could look more like how function calls work, with a default value appearing to mean it is optional? But function call also has the “optional bracket”.

In fact, the new constructor leaves the rendering job to defproc, so they are already rendered in the same way.


robby
2020-8-6 21:53:04

Hm.


robby
2020-8-6 21:53:27

Maybe we should change new so that it parses keywords and do the moral equivalent of adding those parens in. Then we can fix the docs.


sorawee
2020-8-6 22:00:32

> Maybe we should change new so that it parses keywords and do the moral equivalent of adding those parens in. Then we can fix the docs. I’m not sure if I understand this


sorawee
2020-8-6 22:01:14

Here’s another possibility (I’m stilling playing with paren styling because it seems to need the least amount of work)


sorawee
2020-8-6 22:01:27

robby
2020-8-6 22:03:41

My suggestion was to change the new form so that one can write (new timer% #:notify-callback f #:just-once? #t) and have it be same as if one had written (new timer% [notify-callback f] [just-once #t]) (well, but with error messages that match the notation used).


robby
2020-8-6 22:03:59

Then, we could change the documentation rendering to always use the keyword based form.


robby
2020-8-6 22:04:15

That would also solve the problem and probably isn’t too too much work :slightly_smiling_face:


sorawee
2020-8-6 22:05:41

Don’t we still need to maintain backward compatibility, though? I mean, we can document the additional one, but we still need to keep the old one, too, correct?


robby
2020-8-6 22:06:01

we need to make the old one still work but we don’t need the documentation to use the old one.


robby
2020-8-6 22:16:53

And I guess the parsing could look to see if there is a square bracket/paren or a keyword and then go into one of the two specialized parsers. It could be all keywords or no keywords to make error checking easier


mflatt
2020-8-6 23:00:43

I’m ok with italic brackets. In the original, uglier documentation, the tt and non-tt brackets looked more different. But going back to a more generally ugly font combination is probably not the right solution. :slightly_smiling_face: I wouldn’t stand in the way of a keyword-based new, but it’s not the layer where I think the syntax needs to change to improve.


mflatt
2020-8-7 02:23:06

Is there a fancy Unicode bracket that would stand out and render well, such as 〖 〗?


sorawee
2020-8-7 03:56:19

From my experience: not really. But I will try a couple of them and report the result