module+ info

25 views
Skip to first unread message

Neil Van Dyke

unread,
Feb 27, 2016, 8:40:12 PM2/27/16
to Racket-Dev List
If I were to start putting "(module+ info" in my packages, which would
effectively duplicate within "main.rkt" the contents of "info.rkt"...
are you pretty confident that would continue to work in the future,
should Racket ever support an `info` submodule as an alternative to
"info.rkt"?

The reason I ask is that I want to replace McFly with a simpler setup,
which treats an `info` submodule as the canonical `info` module for the
package, and generates "info.rkt" from it. The `info` submodule would
have the usual Racket stuff, plus a few additional things
(copyright/licensing/legal, manifest, version history). This, combined
with my embedded docs format, gives me the normal case of only one
edited source file per package, and simplifies what the tool does.

I see two phases:

1. Programmer writes and maintains "mypackage/main.rkt", with `info`
submodule and embedded docs. Tool maintains "mypackage/info.rkt" and
"mypackage/mypackage.scrbl", but programmer never modifies those 2
files, and rarely has to know they exist.

2. If Racket ever supports `info` submodule (in lieu of "info.rkt") and
single-file packages, programmer can often rename "mypackage/main.rkt"
to "mypackage.rkt", and be done. I think this might have "lightweight"
implications.

BTW, I said "(module+ info" because I expect to want two chunks of
`info` submodule in the file: most of the metadata at the top of the
file, and the big release/change history info at the bottom of the
file. I'm leaning towards having the history in `info` submodule rather
than embedded Scribble docs, so that writing the tool is easier (there
are release-time checks it will do on history), and I don't have to add
Scribble extensions.

Neil V.

Matthew Flatt

unread,
Feb 28, 2016, 7:56:33 AM2/28/16
to Neil Van Dyke, Racket-Dev List
I think it's fine to use `info` in that way.

One of the intended properties of "info.rkt" is that it can be accessed
without running arbitrary code. Accessing an `info` submodule, however,
might involve arbitrary code to compile the enclosing module. So, I'm
not sure how an `info` submodule might work for the package system
and/or `raco setup`, but if we ever want to do something like that, it
certainly seems safe to use `info` in the way you describe.
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-dev+...@googlegroups.com.
> To post to this group, send email to racke...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/racket-dev/56D24FF5.3020809%40neilvandyke.org
> .
> For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages