caleb.e.allen
2019-7-26 14:26:03

@caleb.e.allen has joined the channel


badkins
2019-7-26 15:42:08

Long term, it probably makes sense to add a racket2 mailing list.


greg
2019-7-26 16:04:33

@greg has joined the channel


greg
2019-7-26 16:24:14

I agree. Until I read @notjack‘s message, I didn’t understand this, at all. Why would you lower a barrier to entry, unless you wanted more people to use it? Effectively how is that different from ’more popular’?


greg
2019-7-26 16:25:01

The way @notjack phrased it, it’s actually addressing a question I asked, about who are we aiming for and how popular (sorry) do we really want Racket to be?


greg
2019-7-26 16:25:34

IIUC it’s saying, there are people who are interested in Racket, start to try it, and the parens are just too much. We want to keep those people.


greg
2019-7-26 16:27:49

I mean, honestly, I’m having trouble visualizing who those people are. I’m really curious to learn more about that. But, I mean, at least it’s moving in the direction of having a more-specific picture of who we’re aiming at. What attracted them to Racket? What including but not limited to the parens pushed them away?


greg
2019-7-26 16:28:24

Having that picture is helpful to guide people doing the work, and, to help explain the work.


greg
2019-7-26 16:30:39

Like, did some of these people know going in that Racket used a lispy syntax, but were so interested in possible benefits X Y Z that they started to try it anyway? If so, that is super interesting.


greg
2019-7-26 16:31:12

It’s not just about eliminating objections/negatives (which IME is rarely sufficient; instead it’s usually a never-ending game of whack a mole).


greg
2019-7-26 16:31:28

It’s validating what the positive things are, that are attracting people.


greg
2019-7-26 16:31:43

So, how can we make those even better? How can we get the message out, about those, even more effectively?


greg
2019-7-26 16:32:00

Which I think in the end is where any real growth comes from.


greg
2019-7-26 16:40:19

https://racket.slack.com/archives/CLKGAC44X/p1563810853066400 @mflatt What if a Chez->WASM compiler existed? Or some of us could cause it to exist, through some combination of finding funding and hands-on working? Would that make Racket->WASM much easier, or just a little? (I know you’re super busy, I’m just brain-storming, and definitely not asking you to make anything but a seat-of-the-pants, no-promises guesstimate.)


jyoo980
2019-7-26 16:43:44

@jyoo980 has joined the channel


mflatt
2019-7-26 16:47:21

My best guess is that Chez->Wasm is the way to go. The reasons in favor should be clear, so here are some reasons I might guess wrong: Wasm isn’t actually an assembly language, so the work of making Chez Scheme view Wasm as a back-end might be counterproductive. For example, Wasm will have its own layer of optimizing compiler, so spending a lot of effort on register allocation might be a bad idea. Similarly, trying to simulate jumps when there is no goto or tail calls might be the long way around; there might be a better way to represent continuations.


mflatt
2019-7-26 16:47:29

@greg ^


krismicinski
2019-7-26 16:47:52

@krismicinski has joined the channel


mflatt
2019-7-26 16:49:17

Even if Chez->Wasm isn’t the right idea, implementing something that looks like Chez Scheme to the rumble and schemify layers is almost certainly the right idea.


greg
2019-7-26 16:50:51

Thanks! That’s interesting. Just throwing around buzzwords, I guess another idea is Racket->X->LLVM->WASM ? But X isn’t Chez, and maybe never will be.


mflatt
2019-7-26 16:53:36

Yes, could be. Using LLVM would probably mean distinguishing between ahead-of-time compilation and on-the-fly evaluation (through maybe just an interpreter), which could work for many things.


githree
2019-7-26 16:54:15

WASM tail calls are already in implementation phase: https://github.com/WebAssembly/proposals/issues/17


kimmyg
2019-7-26 16:55:35

@kimmyg has joined the channel


mflatt
2019-7-26 17:00:22

Tail calls would be a big boost to Wasm as a backend for Chez Scheme!


samc
2019-7-26 17:02:28

@samc has joined the channel


szkl
2019-7-26 17:03:40

@szkl has joined the channel


githree
2019-7-26 17:04:10

I believe the consensus is: there will be tail calls in WASM… just a matter of when.


githree
2019-7-26 17:05:50

@mflatt @greg it looks like it is already as an experimental flag in Node 12: https://github.com/google/schism/issues/5#issuecomment-511042506


d_run
2019-7-26 17:58:01

@d_run has joined the channel


zeeshanlakhani
2019-7-26 18:51:35

@zeeshanlakhani has joined the channel


conrad.steenberg
2019-7-26 18:55:58

@conrad.steenberg has joined the channel


steveh2009
2019-7-26 20:22:43

@steveh2009 has joined the channel


plragde
2019-7-26 20:59:14

@plragde has joined the channel


jaz
2019-7-26 21:05:29

@jaz has joined the channel


boeyen
2019-7-26 21:17:08

@boeyen has joined the channel


jaz
2019-7-26 21:20:38

There are also proposals in the works for better gc support. Right now, a language that wants it provides its own gc and uses a shadow stack. And while that’s fine for some uses of wasm, it’s bad for, say, the browser, which already has a gc. If you have code from N languages running in the VM with N different gcs, that’s… not wonderful. But the initial gc proposal doesn’t include stuff like weak references or finalization, so I think it will be awhile before it gets serious use.


jaz
2019-7-26 21:23:05

Andreas Rossberg has also mentioned that he’s like to generalize the exception-handling proposal to support delimited continuations, but that’s also a ways off.


jeapostrophe
2019-7-26 23:06:12

FYI, I expect many are here because of syntax. The main thread for that is here: https://github.com/racket/racket2-rfcs/issues/3 — although it shows up in other places too


mike.castillo.jr
2019-7-26 23:12:08

@mike.castillo.jr has joined the channel


tbrooke
2019-7-27 01:34:13

@tbrooke has joined the channel


jeapostrophe
2019-7-27 02:33:24

@badkins I can’t speak for everyone in the core team (we have not had any secret meeting about these issues where there’d be such a message concocted), but I’ll give you my opinion.

Will there be a hidden link? — If Racket2 is significantly different than Racket1, then there will be new docs and the old docs will be available and maintained. You can see an example of this from PLT Scheme v372 which we released 12 years ago and deprecated at some point (I forget when) by looking here: https://docs.racket-lang.org/mzscheme/index.html This page is listed in the top-level TOC under compatibility and if you search for a binding in it (like #%module-begin) you’ll see an entry for mzscheme but if you are in DrRacket and press F1 on an identifier in #lang mzscheme you’ll only see the entry for MzScheme. If Racket2 is not significantly different, I expect we’ll have a dual view documentation system.

What will support look like? — Racket2 and Racket1 will share the same VM and the same primitives, so security and performance improvements will automatically be shared. (It is highly likely that Racket2 will be implemented in Racket1, so it will be necessary to improve R1 to improve R2.) Similarly, it is very unlikely that useful libraries like openssl or web-server would be rewritten; instead, I’d expect wrappers to be provided for their macros to make them work in the new system. Eventually, I can imagine the main implementation of the macro switching to R2 and the R1 being the compatibility one. Again, since the actual runtime would be shared between R1/2, any improvements or fixes would be shared as well. The only plausible kind of thing that would not be improved (IMHO) would be things like adding extra features to a core R1 form. For example, over time, features have been added to struct in R1. I can imagine a feature being added to R2’s version of struct and not backported because it relied on too much R2-specific stuff. It’s hard to imagine what such a thing would be concretely though, because we don’t normally do stuff like that anyways (it would be backwards incompatible) and that’s why I’m interested in R2 anyways.

We will always be interested in helping users who are programming in #lang racket. Right now, we routinely answer questions on the mailing list about R5RS, which is 21 years old next month.

I value industry users of #lang racket. I welcome all programmers on languages in the Racket ecosystem, even filthy users of Typed Racket. :stuck_out_tongue: In my opinion, the problems that might be caused by two communities are exactly the kinds of technical challenges I am excited about solving. The main issue I see is (a) how to ensure data can go back and forth between R1/2 and (b) how to ensure macros are usable in both. (a) is actually easy, but we have to remember to do it. (b) is more complicated, but I think we know how to do it too.

I don’t perceive thoughtful people like you as intolerant nuisances. I do think that many users seriously underestimate our commitment to backwards compatibility. Here’s a random example: Take this code from 15 years ago — http://www.cs.utah.edu/plt/kill-safe/code7.ss — to make it run, you need to change any? to any/c and the object-waitable? to evt? (Those changes were noted in the change log from March 2005. So if you updated the code after seeing the change log, it would still work 14 years later.) This example indicates that we’re not perfect, but I believe we try far harder than almost any other language implementation team.

Finally, I definitely think it is a big deal, but it is extensions and expansions like this that has made Racket attractive already. Language oriented programming would not be as effective with the original macro system and it was a good thing to throw it away as the main way to do things. Modules (added in 2002) are far far better than the units we had back in 1995, but units are actually still supported and used.


jeapostrophe
2019-7-27 02:35:21

FWIW, I don’t think there’s anything wrong or in bad faith with your posts and questions. I feel a tiny bit like we’ve tried to answer it the same way many times. It is tempting to think you don’t believe us, but as a technical and persuasive writer, I am forced to blame myself and try again.


jeapostrophe
2019-7-27 02:35:44

:heart:


badkins
2019-7-27 02:42:24

Thanks Jay, I appreciate the time for that response, and it’s the most direct addressing of my concerns as I’ve had in the past couple weeks. It’s not that I don’t believe you about the commitment to backward compatibility, it’s that the messages, and subtexts, have been a bit fluid. I have to say, you had me at “filthy users of Typed Racket” :wink:


xinhuang.abc
2019-7-27 03:06:37

@xinhuang.abc has joined the channel


greg
2019-7-27 04:50:38

@greg has left the channel


jesse
2019-7-27 05:01:30

@jesse has joined the channel