[racket-dev] `#%declare' and cross-phase persistent modules
As of v5.90.0.2 (pending), to declare a cross-phase persistent module, the module body must include (#%declare #:cross-phase-persistent) If the module declaration fails to meet the syntactic and import constraints of a cross-phase persistent module, then a syntax error is reported. This change is backward-incompatible in two ways: * Module declarations that are intended as cross-phase persistent won't be, anymore, until a `#%declare' form is added. I think cross-phase persistence is new enough --- and the old, quiet inference of persistence is sufficiently distressing --- that this won't be much of an issue. * The grammar of fully-expanded modules now includes `#%declare' forms. Programs that process fully-expanded modules are not common, but I expect that they exist outside of the main distribution. Those programs will need to be updated. Meanwhile, they won't break until they see a module that has a `#%declare' form, which won't happen often (at least for the near future). Although `#:cross-phase-persistent' is the only keyword recognized by `#%declare' initially, we'll add more. One possibility is a declaration that corresponds to `compile-enforce-module-constants'. I named the form `#%declare' instead of `declare' to avoid conflicts, and also because I expect the form to be used more often in macro expansions than directly, so it seems like a #% kind of form. _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] `#%declare' and cross-phase persistent modules
When compiling a fresh git head clone, I still get some cross-phase persistence errors (see below). Is this my fault, or are some packages still missing the declaration? raco setup: --- checking package dependencies --- raco setup: raco setup: error: during making for pkgs/errortrace-doc/errortrace/scribblings raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace/lang raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/algol60 raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drscheme raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket/private raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribble/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/drracket raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket/private raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/drracket raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket/private raco setup: module: does not satisfy cross-phase persistent grammar On Mon, Jul 22, 2013 at 12:18 PM, Matthew Flatt mfl...@cs.utah.edu wrote: As of v5.90.0.2 (pending), to declare a cross-phase persistent module, the module body must include (#%declare #:cross-phase-persistent) If the module declaration fails to meet the syntactic and import constraints of a cross-phase persistent module, then a syntax error is reported. This change is backward-incompatible in two ways: * Module declarations that are intended as cross-phase persistent won't be, anymore, until a `#%declare' form is added. I think cross-phase persistence is new enough --- and the old, quiet inference of persistence is sufficiently distressing --- that this won't be much of an issue. * The grammar of fully-expanded modules now includes `#%declare' forms. Programs that process fully-expanded modules are not common, but I expect that they exist outside of the main distribution. Those programs will need to be updated. Meanwhile, they won't break until they see a module that has a `#%declare' form, which won't happen often (at least for the near future). Although `#:cross-phase-persistent' is the only keyword recognized by `#%declare' initially, we'll add more. One possibility is a declaration that corresponds to `compile-enforce-module-constants'. I named the form `#%declare' instead of `declare' to avoid conflicts, and also because I expect the form to be used more often in macro expansions than directly, so it seems like a #% kind of form. _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] `#%declare' and cross-phase persistent modules
I get the same thing. Also, the error message is particularly unhelpful. It does not give the name of the module, a source location, or any indication of what part of the module did not match what part of the grammar in what way. This is pretty much impossible to debug without searching for every use of #%declare in the code base, and tracking down every macro that can possibly expand into it. Carl Eastlund On Mon, Jul 22, 2013 at 5:14 PM, Stephen Chang stch...@ccs.neu.edu wrote: When compiling a fresh git head clone, I still get some cross-phase persistence errors (see below). Is this my fault, or are some packages still missing the declaration? raco setup: --- checking package dependencies --- raco setup: raco setup: error: during making for pkgs/errortrace-doc/errortrace/scribblings raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace/lang raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/algol60 raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drscheme raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket/private raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribble/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/drracket raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket/private raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/drracket raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket/private raco setup: module: does not satisfy cross-phase persistent grammar On Mon, Jul 22, 2013 at 12:18 PM, Matthew Flatt mfl...@cs.utah.edu wrote: As of v5.90.0.2 (pending), to declare a cross-phase persistent module, the module body must include (#%declare #:cross-phase-persistent) If the module declaration fails to meet the syntactic and import constraints of a cross-phase persistent module, then a syntax error is reported. This change is backward-incompatible in two ways: * Module declarations that are intended as cross-phase persistent won't be, anymore, until a `#%declare' form is added. I think cross-phase persistence is new enough --- and the old, quiet inference of persistence is sufficiently distressing --- that this won't be much of an issue. * The grammar of fully-expanded modules now includes `#%declare' forms. Programs that process fully-expanded modules are not common, but I expect that they exist outside of the main distribution. Those programs will need to be updated. Meanwhile, they won't break until they see a module that has a `#%declare' form, which won't happen often (at least for the near future). Although `#:cross-phase-persistent' is the only keyword recognized by `#%declare' initially, we'll add more. One possibility is a declaration that corresponds to `compile-enforce-module-constants'. I named the form
Re: [racket-dev] `#%declare' and cross-phase persistent modules
I'm seeing that in a fresh build. (Didn't see it before, because I had mangled my build.) I'll push a repair shortly. At Mon, 22 Jul 2013 17:14:49 -0400, Stephen Chang wrote: When compiling a fresh git head clone, I still get some cross-phase persistence errors (see below). Is this my fault, or are some packages still missing the declaration? raco setup: --- checking package dependencies --- raco setup: raco setup: error: during making for pkgs/errortrace-doc/errortrace/scribblings raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/errortrace-lib/errortrace/lang raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/algol60 raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drscheme raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket/private raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribble/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/tools raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/drracket raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket/private raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/scribblings/drracket raco setup: module: does not satisfy cross-phase persistent grammar raco setup: raco setup: error: during making for pkgs/drracket/drracket/private raco setup: module: does not satisfy cross-phase persistent grammar On Mon, Jul 22, 2013 at 12:18 PM, Matthew Flatt mfl...@cs.utah.edu wrote: As of v5.90.0.2 (pending), to declare a cross-phase persistent module, the module body must include (#%declare #:cross-phase-persistent) If the module declaration fails to meet the syntactic and import constraints of a cross-phase persistent module, then a syntax error is reported. This change is backward-incompatible in two ways: * Module declarations that are intended as cross-phase persistent won't be, anymore, until a `#%declare' form is added. I think cross-phase persistence is new enough --- and the old, quiet inference of persistence is sufficiently distressing --- that this won't be much of an issue. * The grammar of fully-expanded modules now includes `#%declare' forms. Programs that process fully-expanded modules are not common, but I expect that they exist outside of the main distribution. Those programs will need to be updated. Meanwhile, they won't break until they see a module that has a `#%declare' form, which won't happen often (at least for the near future). Although `#:cross-phase-persistent' is the only keyword recognized by `#%declare' initially, we'll add more. One possibility is a declaration that corresponds to `compile-enforce-module-constants'. I named the form `#%declare' instead of `declare' to avoid conflicts, and also because I expect the form to be used more often in macro expansions than directly, so it seems like a #% kind of form. _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket