alexharsanyi
2021-6-19 09:31:12

I am not sure why this happens, but it seems to be related to having an overlay renderer. The overlay renderers are drawn in draw-overlay-renderers , but it is not clear to me what could cause the increasing draw duration.

https://github.com/racket/plot/blob/c4126001f2c609e36c3aa12f300e9c673ab1a806/plot-gui-lib/plot/private/gui/snip2d.rkt#L206


sschwarzer
2021-6-19 10:23:59

I’m searching for a way to join the Racket users mailing list without a Google account, either per web or per e-mail.

The join link on https://lists.racket-lang.org/ redirects me to the message list, as does the link (the same link) I found in an article from Bogdan ( https://defn.io/2019/02/05/google-groups/ ).

I do have a Google account, but I use it as little as possible. I only have the account because I use the Google Play Store. Still, if anyone happens to know a way to subscribe without a Google account, that would be nice, maybe also for future users.


soegaard2
2021-6-19 10:26:15

According to this, you need a Google Account - but not a Google mail address.

https://support.google.com/groups/answer/1067205?hl=en


popa.bogdanp
2021-6-19 10:27:46

You could try sending an e-mail to <mailto:racket-users+subscribe@googlegroups.com\|racket-users+subscribe@googlegroups.com> .


spdegabrielle
2021-6-19 10:28:45

I found it really confusing but you don’t need a g account with that link.


sschwarzer
2021-6-19 10:30:53

@popa.bogdanp It worked! :slightly_smiling_face:


popa.bogdanp
2021-6-19 10:31:46

I was looking at that this morning, but couldn’t see any obvious reasons why it would slow things down either. I also tried using profile to see exactly where the slowdown was, but failed because I got frustrated with the load times since compiling plot takes a very long time. I’ll try that again later if nobody else has any ideas. My hope is I’m just doing something wrong in terms of the protocol between these things.


popa.bogdanp
2021-6-19 10:32:03

Great! I’ll update the blog post


sschwarzer
2021-6-19 10:35:23

@stephen.degabrielle When I click the join link https://groups.google.com/forum/#!forum/racket-users/join on the Racket mailing lists page, it redirects me to https://groups.google.com/g/racket-users , which seems to be the overview page. I don’t see a join link on the page. Maybe you see one if you’re logged into your Google account.


spdegabrielle
2021-6-19 10:41:21

@sschwarzer they have changed it. Last time I checked 6 months ago it let you subscribe without a g-account.


spdegabrielle
2021-6-19 10:43:10

I’ll update the wiki and link to @popa.bogdanp ‘S post


spdegabrielle
2021-6-19 10:43:32


spdegabrielle
2021-6-19 10:58:27

I’ve created an issue on the relevant repo but I don’t have time to make a PR right now https://github.com/racket/racket-lang-org/issues/160\|https://github.com/racket/racket-lang-org/issues/160


alexharsanyi
2021-6-19 11:03:07

Well, the problem does not seem to happen if an editor-canvas% is used, so it may be a protocol problem. The interaction between snip% objects and their admins/editors is not well documented.

Also, if you just want to embed a plot in a GUI application, you can just use snip-canvas% , which is part of MrLib, or the plot-container package which offers some more flexibility to managing the snips…


popa.bogdanp
2021-6-19 11:27:42

I wasn’t aware of snip-canvas% . That might do the trick. Thanks!


popa.bogdanp
2021-6-19 11:33:56

Yup, snip-canvas% is exactly what I want. Thanks again.


robby
2021-6-19 13:12:39

Looking at the code, @notjack it looks like that special case is not in the code.


mflatt
2021-6-19 13:58:21

I’ve pushed an update to the page, so let me know if it’s not right.


sschwarzer
2021-6-19 14:08:52

@mflatt The new text (for example for the user list) is

<https://groups.google.com/forum/#!forum/racket-users/join|Join the users mailing list with a Google account> Join without a Google account by sending email to

The “with” in the first line should be “without.” Same for the other lists.


mflatt
2021-6-19 14:10:04

I thought that the link works only using a Google account. Is that not right?

Or does it look like a title for the following text (because the column is mostly bolded), when it’s meant to be separate?


sschwarzer
2021-6-19 14:19:02

@mflatt Oops, my bad. I thought since there was a bigger text and a smaller below the smaller one would be a detail. But of course that doesn’t make sense because then both texts would contain the same information.

Suggestion: Make the “with account” and “without account” texts the same size. Otherwise it looks like “of course you have a Google account, but if you don’t, then by all means use the mail approach.” :wink: (Ok, maybe I’m exaggerating a bit.)


mflatt
2021-6-19 14:39:28

Ok — I changed it more.


sschwarzer
2021-6-19 14:46:52

Excellent! :+1:


sschwarzer
2021-6-19 14:51:19

Thank you!


seanbunderwood
2021-6-19 17:55:46

@seanbunderwood has joined the channel


massung
2021-6-19 21:07:32

When adding a new package to the Racket Packages, how long once it’s installable does it take for the scribble documentation to be added as well? All the documentation I generated works locally when installed, but it’s still not visible online (and has the “needs documentation” tag).


massung
2021-6-19 21:07:50

I’m not sure if it just takes another hour or so, or if I goofed something.


ben
2021-6-19 21:09:00

I’ll usually wait a day or two to check the docs


joel
2021-6-19 21:39:16

Last time I released a package it took a day and a half lol


joel
2021-6-19 21:40:53

Literally wait a day, then wait an hour, then when you notice some weird error on the package server and you’re about to ask if something is wrong wait another five minutes and suddenly it will be there


massung
2021-6-19 21:55:16

lol


sorawee
2021-6-19 22:45:16

@mflatt say I want to install two versions of the same package at the same time, what’s the easiest way to do that? Should I use the recent layering support? Can you give a small example on how to set it up?


mflatt
2021-6-19 22:46:34

Does any other package depend on the one that you want two installations of?


sorawee
2021-6-19 22:47:10

Oh, good point. The answer is yes


sorawee
2021-6-19 22:47:54

To be more clear about what I want to do. I want to compare performance difference between two versions of the same library


sorawee
2021-6-19 22:48:35

So that requires installing both versions, and run programs in both versions


mflatt
2021-6-19 22:50:02

You can use layering where everything that depends on the package of interest is in the second layer along with that package. It’s probably easier and faster (counting the time you spend fiddling with configurations) just to have two installations with installation-scope packages, though.


mflatt
2021-6-19 22:51:11

Depending on the base version and how much of the main installation you need, raco cross --workspace .... might be a good choice for setting up the different installations in different workspaces.


sorawee
2021-6-19 22:55:10

I will look into raco cross. Thanks!


notjack
2021-6-19 22:55:15

Google Groups went through a UI migration recently (like a year or two ago) so that’s probably why all the links changed


notjack
2021-6-19 22:57:39

That combined with the fact that list? is coerced to (listof any/c) means that any function which uses list? as an input contract always runs in linear time, at minimum


robby
2021-6-19 22:58:19

Yeah, that was bad. Thanks for pointing it out, I fixed it.



robby
2021-6-19 23:01:20

I meant to thank you in the commit message but I forgot. :(


notjack
2021-6-19 23:35:22

wonderful, thank you very much!


notjack
2021-6-19 23:40:49

do you know if vector, hash, and set contracts have that optimization too?


robby
2021-6-19 23:41:13

pretty sure set doesn’t


robby
2021-6-19 23:41:29

and probably not the others, now that I think about it.


notjack
2021-6-20 00:10:16

they could probably use (contract-stronger? elem/c any/c) instead of (eq? elem/c any/c) too


sorawee
2021-6-20 00:16:56

why == tho?


samth
2021-6-20 00:18:48

The machine that builds documentation has a cycle time of about 8 hours


notjack
2021-6-20 00:18:59

symmetry with != and familiarity with other languages


robby
2021-6-20 00:19:30

Those don’t have asymptotic improvements, but they also seem worth doing. I don’t think they have the vector? and (vector/c any/c) are-actually- the-same-contract thing.


notjack
2021-6-20 00:20:57

I was thinking like, (listof (or/c any/c #false)) which I’ve seen people write occasionally


robby
2021-6-20 00:21:34

if or/c cooperated with any/c the would work.


robby
2021-6-20 00:21:40

That


robby
2021-6-20 00:27:21

Thinking a little bit about it, it is probably best if things like (contract-name (or/c any/c #f)) still returned something like "(or/c any/c #f)" and not just “any/c”. But if that weren’t the case, it would be a simple change to make (listof (or/c any/c #f)) be the same as (listof any/c)


notjack
2021-6-20 00:38:32

does (contract-stronger? (or/c any/c #false) any/c) return true?


robby
2021-6-20 00:38:44

yes


robby
2021-6-20 00:38:47

I think so


robby
2021-6-20 00:38:55

well, let’s try it!


notjack
2021-6-20 00:39:04

heh


robby
2021-6-20 00:39:09

it does!


robby
2021-6-20 00:39:23

the other way works too


sorawee
2021-6-20 00:45:04

if users write it, instead of optimizing (or/c any/c #false) to any/c, I think it should make a warning instead. Though that might become annoying if a macro generates the contract.


robby
2021-6-20 00:45:30

I’m not really sure we have a good setup for warnings in racket


robby
2021-6-20 00:46:06

But I also think that sometimes people write (or/c any/c #f) because they want to convey the idea that #f is treated specially, but all values are accepted.


robby
2021-6-20 00:46:11

I think I’ve written that (in docs) before.


robby
2021-6-20 00:46:56

In any case, the change I have in mind will be an optimization but will affect only the checking and stronger and things like that.


robby
2021-6-20 00:47:03

It won’t check how the library behaves otherwise.


robby
2021-6-20 00:47:17

Like the or/c will be preserved in the error messages.


sorawee
2021-6-20 00:48:26

Ah, yes. I totally agree with all of that. Printing an error message with something that users didn’t write definitely will cause confusion


robby
2021-6-20 00:48:55

Yeah, this turns out to be a hard property to preserve all the time, but I have made an effort in the contract system to do that


robby
2021-6-20 00:49:27

Like &lt;=/c actually generates the same thing as between/c internally (but it remembers the name). There are other examples like that.


robby
2021-6-20 00:49:46

(they generate the same thing to make contract-stronger work better)


ben.knoble
2021-6-20 01:35:05

alternately, use VMs/docker/etc., but that’s a bit heavy for my taste.


robby
2021-6-20 01:39:07

okay, I’ve pushed that.