spdegabrielle
2019-6-20 09:56:50

I made a page on the github wiki to bring some resources together

https://github.com/racket/racket/wiki/Creating-Languages

I’d appreciate it if someone could take a look just to make sure I’ve not made any mistakes.


jerome.martin.dev
2019-6-20 10:02:19

@spdegabrielle Looks good! Can I suggest adding my recent workshop to the video list? https://fosdem.org/2019/schedule/event/makeownlangracket/


greg
2019-6-20 13:12:00

@spdegabrielle Nice! For the https://github.com/racket/racket/wiki/Creating-Languages#lexers-and-parsers section, I wonder if it should instead provide queries for packages tagged as such. That way, it will automatically be up-to-date as packages are added. Also it’s an incentive for people to tag their pkgs well.


greg
2019-6-20 13:12:19

Unfortunately at the moment there are both “parser” and “parsing” tags, and various packages use one or both — plus AFAICT searching for multiple tags is a logical AND not OR of those tags. So you need to do both: - https://pkgd.racket-lang.org/pkgn/search?tags=parser - https://pkgd.racket-lang.org/pkgn/search?tags=parsing to get all. :disappointed:


greg
2019-6-20 13:13:08

It would be great to pick just one — maybe the noun, “parser” — and update those couple dozen packages’ tags.


greg
2019-6-20 13:14:23

And/or (no pun intended) maybe the pkg search could allow tags to be AND/OR.


notjack
2019-6-20 16:47:47

Is the package owner the only one who can update tags? I remember wanting to do a tag cleanup some time ago and being blocked on the catalog not having a way to grant “tag admin” powers to people


pavpanchekha
2019-6-20 17:25:19

Q about the package server—is there a way to mark “versions”?


pavpanchekha
2019-6-20 17:25:56

We distribute Herbie through the Racket package manager (in preparation for plugins, dependencies, and so on) and I’d like there to be a way to get the 1.3 version exactly, instead of whatever we have in master


samth
2019-6-20 17:34:33

You can specify a tag or commit in the url


pavpanchekha
2019-6-20 17:37:35

In which URL?


pavpanchekha
2019-6-20 17:37:56

pavpanchekha
2019-6-20 17:38:50

I know it’s not the “Version Exceptions” box—I made that mistake earlier


ben
2019-6-20 17:54:56

The source url. Go to “Edit this package” and look for “Branch or commit”


pavpanchekha
2019-6-20 17:56:11

Oh, I see what you mean. Is there a way to list multiple versions?


ben
2019-6-20 17:57:27

version exceptions, that’s it


pavpanchekha
2019-6-20 17:58:25

Got it. So whenever I release a new version I’ll update the URL


pavpanchekha
2019-6-20 17:58:34

But there isn’t a way to download old versions


pavpanchekha
2019-6-20 17:58:38

ok


ben
2019-6-20 18:00:45

right, no old versions through raco pkg (unless you happen to be using an older racket that matches a version exception)


ben
2019-6-20 18:01:04

I think the recommended work-around is to clone the package & use git checkout


pavpanchekha
2019-6-20 18:17:37

yeah, makes sense


alexknauth
2019-6-20 18:17:43

Users can choose to download earlier versions by manually using the URL with the commit or release tag/branch in it instead of the package name, without using the package server at all. You shouldn’t have to clone and git checkout. So if someone wanted the old v1.0 of herbie instead of v1.3, then instead of raco pkg install herbie, they would use raco pkg install <https://github.com/uwplse/herbie.git?path=src#v1.0> Edit: for it to cooperate with deps declarations, they should include the name herbie as well raco pkg install --name herbie <https://github.com/uwplse/herbie.git?path=src#v1.0>


pavpanchekha
2019-6-20 18:21:01

Oh huh, cool, I didn’t know you could do that


pavpanchekha
2019-6-20 18:21:17

Another Q about the package server


pavpanchekha
2019-6-20 18:22:10

I have two tests failing on the package server. One is because the package server doesn’t include the bench directory, which is outside the package; the other is because that test takes ~10min to run, and the package server times out after 60s.


pavpanchekha
2019-6-20 18:22:34

Is there a way I can disable tests just on the package server, but that wouldn’t also affect raco test normally?



pavpanchekha
2019-6-20 18:31:35

Got it, thanks


alexknauth
2019-6-20 18:31:57

Rosette does (define test-omit-paths (if (getenv "PLT_PKG_BUILD_SERVICE") 'all '()))


alexknauth
2019-6-20 18:32:10

in the package info.rkt


pavpanchekha
2019-6-20 18:36:07

Thanks, I’ll do something similar


mflatt
2019-6-20 21:14:14

No, I don’t think that information is kept by ffi/unsafe. If you’re interested to know for debugging purpose which library was found, search info is logged to ffi-lib at the debug level.


mflatt
2019-6-20 21:16:15

Hm… maybe it only logs the search attempts on failure.


eeide
2019-6-20 21:46:41

FWIW, I had this same question a few days ago. Thanks for asking it!


mflatt
2019-6-20 21:48:23

I guess ffi-lib bottoms out by passing the raw library name (without a path)_ to the system. So maybe you want logging at the OS level… See man dyld for a list of environment variables that you can to set to get information.


spdegabrielle
2019-6-20 22:46:36

Thanks @jerome.martin.dev - added


spdegabrielle
2019-6-20 22:56:39

@greg I’ve added the links, rather than replacing the existing ones.


ararslan
2019-6-21 00:45:34

I noticed that Racket isn’t one of the languages available on Travis CI. Has anyone discussed adding Racket support as a community maintained addition?


lexi.lambda
2019-6-21 00:55:59

ararslan
2019-6-21 00:57:32

That should pretty easy to incorporate into Travis’ existing infrastructure I think


ararslan
2019-6-21 00:57:42

I mean like upstream it


notjack
2019-6-21 01:41:55

There’s been some discussion, but since Travis was acquired some months ago I don’t think they’re likely to be putting effort into new features or expanded language support.


notjack
2019-6-21 01:42:28

It’s probably more maintainable anyway to use a Docker-based CI service


ararslan
2019-6-21 01:59:47

Actually they’re putting more effort into both! I was at a conference last week at which Travis had a big presence and I’ve been talking with them a bunch. They’re rolling out support for ARM builds, and they may even revisit adding FreeBSD. They said that being acquired gave them more resources to focus on those things.


ararslan
2019-6-21 02:00:07

There are a number of PRs, including by Travis employees, adding new language support


ararslan
2019-6-21 02:13:14

I think most Travis Linux builds are running on Docker


notjack
2019-6-21 02:28:33

They’re running on docker but they don’t let users specify custom docker images to run their tests in. Circle CI does that for example.


notjack
2019-6-21 02:29:04

Oh that’s good to hear!


ararslan
2019-6-21 02:31:40

Oh, I see what you mean


ararslan
2019-6-21 02:31:47

Yeah that is nice


ararslan
2019-6-21 02:32:31

Yeah, some of my colleagues were similarly speculating that their open source offerings would decline after being acquired, so I was really happy to hear that they’re expanding.


greg
2019-6-21 02:39:29

@ararslan https://docs.travis-ci.com/user/languages/community-supported-languages/ doesn’t sound particularly easy, to me. Especially compared to the status quo. What I hear is: Do things in Ruby. Talk with Travis about how they’d prefer to support version matrices, that’s not documented there and in any case not how it already works fine now. Still be on the hook to do “support” — but with two other people, and within Travis’ system which if it turns out to be JIRA please put a pencil in my eyeball. :smile: ¯_(ツ)_/¯


greg
2019-6-21 02:39:57

But if some other folks think it would be worthwhile, I’d be happy to hand over the reins for the next 6 years.


ararslan
2019-6-21 02:42:05

I’m one of the maintainers of the Julia language integration for Travis, which is community supported. As far as I can tell, all you really need is a simple Ruby script in the travis-build repo. The Ruby script generates a Bash script that runs in the image that does the build.


notjack
2019-6-21 02:46:09

@greg I’m willing to be one of the two other people


greg
2019-6-21 03:48:14

@notjack Sounds good. When you find the other two people, and it goes live on Travis, let me know and I’ll update the README to point people there. Until/unless that happens, I’m glad to keep maintaining the existing thing.


notjack
2019-6-21 05:09:07

Today, one of mflatt’s commits (https://github.com/racket/racket/commit/ec5b45e4f80341911524eebe478d70e5e60465fa) taught me that when writing macro-generating macros you can use ... to escape ... in an entire expression. So you can write this: (define-syntax-rule (define-maker-definer definer-id maker) (... (define-syntax-rule (definer-id id ...) (begin (define id (maker)) ...))) Instead of this: (define-syntax-rule (define-maker-definer definer-id maker) (define-syntax-rule (definer-id id (... ...)) (begin (define id (maker)) (... ...))))