[racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-17 Thread Eric Eide
Matthew Butterick  writes:

> Once upon a time I tried to do the same for Pollen and couldn't sort it
> out. AFAICT the git hash isn't generated until the commit is made.

That's true; you can't figure out the hash before the commit is made.

I think I have the pieces of a workable (for me) implementation now, but I
haven't actually implemented it yet.  When I do I'll send you an email with a
pointer to the relevant code.

Thank for the pointer to the timestamp-based technique!  I'll take a look.

-- 
---
Eric Eide   . University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/m14l4nisyc.fsf%40cs.utah.edu.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-17 Thread Matthew Butterick

> On Jun 17, 2019, at 10:23 AM, Eric Eide  wrote:
> 
> Communicate with users.  I want to put the appropriate git hash into the 
> output
> of my program (Xsmith-based random program generators) so that I can attempt 
> to
> reproduce the output, if necessary.

Once upon a time I tried to do the same for Pollen and couldn't sort it out. 
AFAICT the git hash isn't generated until the commit is made. Instead, I ended 
up adding a git push hook that writes a timestamp into a "ts.rktd" file as part 
of the commit. Then when Pollen is installed, that timestamp can be baked into 
the version number as a "build number". [1] So it is not the git hash, but it 
still identifies a particular commit. I'm sure this offends common decency, but 
it has indeed been useful for pinpointing user problems.

[1] https://docs.racket-lang.org/pollen/version-notes.html 



-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/1C6BFA1E-612A-498D-A92D-75F0B880F019%40mbtype.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-17 Thread Robby Findler
But stepping back a little bit, I'm curious why you're doing this more
generally. Is this a way to communicate with users about what version
they are using somehow or to tell them how to get specific versions
that aren't the version listed on pkgs.racket-lang.org?

Robby

On Mon, Jun 17, 2019 at 11:50 AM Eric Eide  wrote:
>
> Sam Tobin-Hochstadt  writes:
>
> > If you want "best-effort checksum associated with this code in some
> > way" then combining the information from `pkg-info` with calling the
> > git binary is probably necessary.
>
> Yes, "best-effort checksum" is what I'm trying to do.  Thanks again for the
> help!
>
> --
> ---
> Eric Eide   . University of Utah School of 
> Computing
> http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 
> FAX
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to racket-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-users/m1r27sjgvt.fsf%40gris-dmz.flux.utah.edu.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAL3TdOO09zD6cLX7dmDFbvGtn-F5FFuwLh%2BpueE%3DpZL7S6%3D6rQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-17 Thread Robby Findler
On Mon, Jun 17, 2019 at 12:23 PM Eric Eide  wrote:
>
> Robby Findler  writes:
>
> > But stepping back a little bit, I'm curious why you're doing this more
> > generally. Is this a way to communicate with users about what version
> > they are using somehow or to tell them how to get specific versions
> > that aren't the version listed on pkgs.racket-lang.org?
>
> Communicate with users.  I want to put the appropriate git hash into the 
> output
> of my program (Xsmith-based random program generators) so that I can attempt 
> to
> reproduce the output, if necessary.

OIC. That's neat.

Robby

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAL3TdON8y67VgFxahz6hVD597gQfJUkreh_EUFaLWTsxG_5xaw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-17 Thread Eric Eide
Robby Findler  writes:

> But stepping back a little bit, I'm curious why you're doing this more
> generally. Is this a way to communicate with users about what version
> they are using somehow or to tell them how to get specific versions
> that aren't the version listed on pkgs.racket-lang.org?

Communicate with users.  I want to put the appropriate git hash into the output
of my program (Xsmith-based random program generators) so that I can attempt to
reproduce the output, if necessary.

-- 
---
Eric Eide   . University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/m1h88ojfcq.fsf%40gris-dmz.flux.utah.edu.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-17 Thread Eric Eide
Sam Tobin-Hochstadt  writes:

> If you want "best-effort checksum associated with this code in some
> way" then combining the information from `pkg-info` with calling the
> git binary is probably necessary.

Yes, "best-effort checksum" is what I'm trying to do.  Thanks again for the
help!

-- 
---
Eric Eide   . University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/m1r27sjgvt.fsf%40gris-dmz.flux.utah.edu.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-17 Thread Sam Tobin-Hochstadt
I guess I don't fully understand what you're trying to accomplish. In
general, a Racket package might live inside some git repository on the
file system, but Racket wouldn't necessarily know anything about that.

If you want "best-effort checksum associated with this code in some
way" then combining the information from `pkg-info` with calling the
git binary is probably necessary. If you want "the checksum used to
install this package" then if the package checksum in #f it doesn't
exist.

Sam

On Sun, Jun 16, 2019 at 10:11 PM Eric Eide  wrote:
>
> Sam Tobin-Hochstadt  writes:
>
> > What do you need the hash for? Could you get the hash from the package
> > system, for example:
> >
> >> (require pkg/lib)
> >> (pkg-info-checksum (hash-ref (installed-pkg-table) "z3"))
> > "84059a4428454cc6edd57865befaedb1d29dedce"
>
> This trick does not work (in my tests so far) when a git sandbox is linked as 
> a
> package.  When installed in that way, the package checksum is #f :-(.
>
> --
> ---
> Eric Eide   . University of Utah School of 
> Computing
> http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 
> FAX
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to racket-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-users/m1tvcpklkm.fsf%40cs.utah.edu.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAK%3DHD%2BYuiqwUoX_L6paQ%2BEf%2B7axS8JKao1N%3DBaCDrFpcLm189w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] exercise 1, racket school 2018

2019-06-17 Thread Ryan Culpepper

On 6/17/19 4:20 PM, Robert Girault wrote:

I was able to do the first half of exercise 1 (see sources at the end
of this message) --- write a macro computing some information at
run-time.  The second half is to write the same macro, but computing
some information at compile-time --- I couldn't do this one.  I'm
looking for some directions on how to achieve this.

(*) Context

; Syntax -> Syntax
; (define-world* name ...) defines all name ... to stand for a string
(define-syntax (define-world* stx)
   (syntax-parse stx
 ((_ x:id ...)
  #'(define-values (x ...) (values (begin 'x "world") ...)

(*) Exercise 1

Exercise 1. Modify define-world* so that it binds each given
identifier to its place in the sequence. We start counting at 0 so
that

(define-world* x y z)

binds x to 0, y to 1, and so on.


Hint 1: If you were going to translate this one example by hand, here's 
one way to do it:


  (define-values (x y z) (values 0 1 2))

Hint 2: Here's another way to do it:

  (begin (define x 0) (define y 1) (define z 2))

Why might the first version be "better" than the second version (from a 
macro-writer's point of view, at least)?


Ryan

--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/9aa7b28d-97db-43aa-46a4-336683cce65f%40ccs.neu.edu.
For more options, visit https://groups.google.com/d/optout.


[racket-users] exercise 1, racket school 2018

2019-06-17 Thread Robert Girault
I was able to do the first half of exercise 1 (see sources at the end
of this message) --- write a macro computing some information at
run-time.  The second half is to write the same macro, but computing
some information at compile-time --- I couldn't do this one.  I'm
looking for some directions on how to achieve this.

(*) Context

; Syntax -> Syntax
; (define-world* name ...) defines all name ... to stand for a string
(define-syntax (define-world* stx)
  (syntax-parse stx
((_ x:id ...)
 #'(define-values (x ...) (values (begin 'x "world") ...)

(*) Exercise 1

Exercise 1. Modify define-world* so that it binds each given
identifier to its place in the sequence. We start counting at 0 so
that

(define-world* x y z)

binds x to 0, y to 1, and so on.

Consider two variants: one that compiles the values at compile time
and another one that computes them at run time. The second one might
be a bit easier, but do try your hands at both.

(*) My first solution

; Syntax -> Syntax
; (define-naturals-runtime* ...) defines all names ... each to natural
; number beginning at 0 (we use a counter computed at runtime).
(define-syntax (define-naturals-runtime* stx)
  (syntax-parse stx
((_ x:id ...)
 #'(begin
 (define n -1)
 (begin
   (set! n (add1 n))
   (define x n)) ...

(*) Compile-time version

That's my trouble.  Here's what I wrote.

(define-syntax (define-naturals* stx)
  (define n -1)
  (syntax-parse stx
((_ x:id ...)
 #`(begin
 (begin
   #,(set! n (add1 n))
   (define x #,n)) ...

> (syntax->datum (expand-once '(define-naturals* a b c)))
'(begin
   (begin # (define a 0))
   (begin # (define b 0))
   (begin # (define c 0)))

I see (set! n (add1 n)) took place once --- at compile-time.  I
expected something like:

'(begin
   (begin # (define a 0) (set! n 1))
   (begin # (define b 1) (set! n 2))
   (begin # (define c 2) (set! n 3)))

I think I don't understand the real definition of "...".

Thank you.

Sources:
https://summer-school.racket-lang.org/2018/plan/mon-mor-lecture.html
https://summer-school.racket-lang.org/2018/plan/mon-mor-lab.html

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAH-HXu_JzMdHGy29RFUqdeR81%3DfJcAK6T%2BN0EK-PdO%3D6tzk__A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] SLE 2019: Final Call for Papers - Deadline Extension; Athens, Greece; October 21-22

2019-06-17 Thread Andrei Chis

Call for Papers:
12th ACM SIGPLAN International Conference on Software Language Engineering 
(SLE 2019)
co-located with SPLASH 2019
Athens, Greece
October 21-22, 2019 

https://conf.researchr.org/home/sle-2019
http://www.sleconf.org/2019
Follow us on twitter: https://twitter.com/sleconf

---
IMPORTANT DATES
---

Deadlines have been extended by one week from the earlier announcements:

* Abstract Submission:  June  21, 2019
* Paper Submission: June  28, 2019
* Author Notification:  August 9, 2019 



We are pleased to invite you to submit papers to the 12th ACM SIGPLAN 
International Conference on Software Language Engineering (SLE 2019), held 
in conjunction with SPLASH 2019 at Athens, Greece on October 21-22, 2019.

---
Topics of Interest
---

SLE 2019 solicits high-quality contributions in areas ranging from 
theoretical and conceptual contributions, to tools, techniques, and 
frameworks in the domain of software language engineering. Topics relevant 
to SLE cover generic aspects of software languages development rather than 
aspects of engineering a specific language. In particular, SLE is 
interested in contributions from the following areas:


* Software Language Design and Implementation
  - Approaches to and methods for language design
  - Static semantics (e.g., design rules, well-formedness constraints)
  - Techniques for specifying behavioral / executable semantics
  - Generative approaches (incl. code synthesis, compilation)
  - Meta-languages, meta-tools, language workbenches

* Software Language Validation
  - Verification and formal methods for languages
  - Testing techniques for languages
  - Simulation techniques for languages

* Software Language Integration and Composition
  - Coordination of heterogeneous languages and tools
  - Mappings between languages (incl. transformation languages)
  - Traceability between languages
  - Deployment of languages to different platforms

* Software Language Maintenance
  - Software language reuse
  - Language evolution
  - Language families and variability

* Domain-specific approaches for any aspects of SLE (design, 
implementation, validation, maintenance)

* Empirical evaluation and experience reports of language engineering tools
  - User studies evaluating usability
  - Performance benchmarks
  - Industrial applications

---
Types of Submissions
---

SLE 2019 solicits three types of contributions: Research Papers, Tools 
Papers, and New Ideas/Vision papers.

* Research papers
These should report a substantial research contribution to SLE or 
successful application of SLE techniques or both. Full paper submissions 
must not exceed 12 pages, excluding bibliography.

* Tool papers
Because of SLE’s interest in tools, we seek papers that present software 
tools related to the field of SLE. Selection criteria include originality 
of the tool, its innovative aspects, and relevance to SLE. Any of the SLE 
topics of interest are appropriate areas for tool demonstrations. 
Submissions must provide a tool description of 4 pages excluding 
bibliography, and a demonstration outline including screenshots of up to 6 
pages. Tool demonstrations must have the keywords “Tool Demo” or “Tool 
Demonstration” in the title. The 4-page tool description will, if the 
demonstration is accepted, be published in the proceedings. The 6-page 
demonstration outline will be used by the program committee only for 
evaluating the submission.

*New ideas / vision papers
New ideas papers should describe new, non-conventional SLE research 
approaches that depart from standard practice. They are intended to 
describe well-defined research ideas that are at an early stage of 
investigation. Vision papers are intended to present new unifying theories 
about existing SLE research that can lead to the development of new 
technologies or approaches. New ideas / vision papers must not exceed 4 
pages, excluding bibliography.

*Workshops
Workshops will be organized by SPLASH. Please inform us and contact the 
SPLASH organizers if you would like to organize a workshop of interest to 
the SLE audience. Information on how to submit workshops can be found at 
the SPLASH 2019 Website.

---
Artifact Evaluation
---

SLE will continue to use an evaluation process for assessing the quality of 
the artifacts on which papers are based to foster the culture of 
experimental reproducibility. Authors of accepted papers are invited to 
submit artifacts. For more information, please have a look at the Artifact 
Evaluation page.

---
Submission Details