Isn’t the first x
bound to the second x
?
#lang racket
(define-syntax-rule (#%top . y) 'y)
x
(define x 1)
x
Stackoverflow is asking people to create ads for Open Source contribution.
Maybe we could have Racket there?
@jerome.martin.dev agreed, do you know what the requirements are?
> The image that you create must be 300 pixels by 250 pixels, or twice that if high DPI. > Must be hosted through our standard image uploader (imgur) > Must be GIF or PNG > No animated GIFs > Absolute limit on file size of 150 KB > Must have a 1px border if (part of) the background is white, 2px if the image is high DPI.
Also, in order for the ad to appear on the site, the post on SO must have an upvote score of 6 of higher.
That sounds doable although I am not an artist.
I can handle something, but I’d like some kind of catch phrase on it. Brainstorming time?
> It must be an advertisement soliciting the participation and contribution of programmers writing actual source code.
Help us make the Racket even greater!
ahah :smile:
Should we focus on revamping CONTRIBUTING.md
and have that as clickthrough.
I am happy to look at it later on.
I think @spdegabrielle has looked at this before.
Yeah, sounds good.
Oh, it was @dstorrs, for some reason I thought it was @spdegabrielle. My apologies.
Oh yeah I remember, I had suggested some changes in that PR. I think it’s already pretty good as it is. Maybe it lacks some kind of “Near future objectives” or “List of first-timer issues”
Unfortunately I don’t actually like the PR. Nothing against @dstorrs or @spdegabrielle work (he did discuss this in the ML) but as @mflatt said in the list, the file proposed is not related to Racket contributions per-se.
oh, I see, yeah, it’s more of a Github tutorial
My take is that the file should be succint and contain the places where people can contribute to: Racket code, C subsystem / Chez, Testing/CI, and Documentation.
We should then point to places where each of these live and maybe explain how the parts are connected.
yep, definitely a good idea
Github related stuff - how to fork, PR, etc, should probably go into the wiki.
Here I should kudo @spdegabrielle - as far as I understand it, he’s on a mission to improve the wiki.
Is there a deadline for this ad thingy?
I can’t find a deadline in the post. It has been posted yesterday, FWIW
I have asked.
@mflatt with regards to the linklet related stuff, with -c
and -o
I do get a linklet but my program has been optimized away as it doesn’t seem to see the code in the main submodule. And if I try to use --submod main
it will load my program and not generate a linklet. I wouldn’t think it is necessary to evaluate the code in order to compile to a linklet, surely it’s not given you generate the linklet to compile to CS.
@jerome.martin.dev There's no deadline, @PauloMatos, and the ads will run until the next cycle (Jan. '20). – JNat♦ 1 hour ago
we can use this as motivation to get a CONTRIBUTING.md
up.
@sanchom true, we do that in gcc with the easy-hack
tag. However, it’s not always easy to assign them but we could give it a go. @samth @mflatt what do you think?
I think it is tricky to label such but it’s a good idea
@mflatt After upgrading from 7.3.0.12 to 7.3.0.13 make cs RACKET=racket
goes further, but now I have the following message:
Looks like something has gone wrong with incremental build. Not sure what, and I can try investigating later, but it may be simplest to just discard “/home/orseau/build/racket/racket/src/build/” and try again.
@laurent.orseau remove all compiled directories from your build and try again. find . -type d -name compiled -exec rm -R \{\} \;
@pocmatos Thanks, will try. Is there something like make clean
instead? (there’s a CLEAN_MODE
, but not sure what this is for)
I always run git clean -xdf
before a build.
good idea, thanks!
:+1:
Simplifying definitions...
Removing unused definitions...
Can remove 1009 of 3645 defined names, keeping 2636
Checking that references outside the runtime were removed by simplification...
That looks cool! :smile:
@mflatt do you know what’s going on in here and if it’s possible from the command line to get a linklet for a whole program with bootstrap-run.rkt
or something else? Otherwise, I will try to dig in the source code how this is done for ChezScheme so I can reproduce the procedure for my own use.
I’ve pushed a repair so that -x
mode handles --submod
in the way that you’d expect. Also, it no longer runs the starting module on the way to extracting a linklet. You won’t be able to extract a linklet for a module that references read
, though. Probably it would be useful to have a mode that makes linklet imports for references to non-primitives.
Thanks, what’s special about read
?
It’s implemented by the expander layer, so not a primitive at the level of linklets, but it’s also not available to flatten into the linklet.
How does it ever work for RacketCS? My understanding was that all was converted to linklet and schemefy would convert to Chez and Chez would take it from there. Let me go back a few steps. I am working on JSC, the WebKit JavaScript compiler full time at the moment but I have some time to devote to work to enhance my knowledge of the JavaScript language. So I thought : “Cool, I will write a simple Racket -> JavaScript compiler and then see how far I can take it”. in one of your talks you mention that all is flattened into linklets so new Racket backends can take it from there. I thought the process of getting the linklet was slightly more straighforward but I am spending quite a bit of time trying to flatten to a linklet. Am I going in the right direction at all?
The Racket CS build has to flatten the expander, and that’s the end of the line for flattening. From there, the expander takes over. Specifically, the expander compiles any module that needs read
into a linklet that takes read
as an input. So, if you’re running Racket on Javascript, then a primitive read
isn’t needed from a Javascript back end. But if you’re trying to flatten arbitrary Racket programs, then the expander’s functionality constitutes a unique gap between what the expander/flattener expects as primitives and what it can integrate into a flattened linklet.
I think some facet of the expander’s uniqueness is inherent to the expander. For something like read
, though, the problem could be solved in some way. It’s just that no solution was needed for Racket CS, so the problem hasn’t been solved, so far.
@jerome.martin.dev @pocmatos @dstorrs I’ve updated https://github.com/racket/racket/wiki/Contributing-to-Racket with the contents of that patch. i work on it because it is easy, and I’m aware that the github project it might be the first thing a developer sees
Thanks for the explanation, although I am not convinced I understood all the nuances of the read
handling or why it is special. This is definitely one of the areas I wish I had more time to explore. I think I will start with putting some breakpoints in racketcs and see what the flow is.