[racket-dev] Pre-Release Checklist for v5.2.1, second call

2012-01-20 Thread Ryan Culpepper

Checklist items for the v5.2.1 release
  (using the v5.2.0.900 release candidate build)

Search for your name to find relevant items, reply when you finish an
item (please indicate which item/s is/are done).  Also, if you have any
commits that should have been picked, make sure that the changes are in.

Important: new builds are created without announcement, usually whenever
I pick a few commits.  If you need to commit changes, please make sure
you tell me to pick it into the release branch.

--> Release candidates are at
-->   http://pre.racket-lang.org/release/installers

Please use these installers (or source bundles) -- don't test from
your own git clone (don't test v5.2.1.1 by mistake!).  To get
the tests directory in such a directory, you can do this:
  cd ...racket-root...
  git archive --remote=git://git.racket-lang.org/plt.git release \
  -- collects/tests | tar x

--

* Matthew Flatt 
  - mzc --exe tests
  - Create an executable from a BSL program.

* John Clements 
  - Stepper Tests
  Updates:
  - Stepper Updates: update HISTORY
  (updates should show v5.2.1 as the most current version; email me
  to pick the changes when they're done, or tell me if there are no such
  changes.)

* Sam Tobin-Hochstadt ,
   Vincent St-Amour 
  - Match Tests
  - Typed Racket Tests
  - Typed Racket Updates: update HISTORY
  (updates should show v5.2.1 as the most current version; email me
  to pick the changes when they're done, or tell me if there are no such
  changes.)

* Ryan Culpepper 
  - DB Tests

* Kathy Gray 
  - Test Engine Tests

* Noel Welsh 
  - Rackunit Tests
  - SRFI Tests
  - Ensure that all claimed srfi's are in the installer and they all
load into racket or drracket (as appropriate)

* Eli Barzilay 
  - Racket Tree: compare new distribution tree to previous one
_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] Strange error with gui and ffi

2012-01-20 Thread Matthew Flatt
At Thu, 19 Jan 2012 15:40:07 +0100, Tobias Hammer wrote:
>  > Even if libVLCore is statically linked to a libjpeg, I think it could
>  > interact with dynamic loading of another libjpeg, depending on the
>  > platform and linking options.
> 
> I digged a bit more and found the following line the rackets libffi:
> handle = dlopen(name, RTLD_NOW | RTLD_GLOBAL);
> If i interpret the manpages correct that means that all symbols from the 
> lib are loaded and used to resolve references. That may be convenient 
> for the libraries that the racket core uses but may lead strange 
> behavior like the one i got whenever name clashes happen.
> 
> Maybe it would be a good idea to make this import all behavior optional.

I agree that RTLD_GLOBAL should be removed by default,
but it should be made available as an option. Meanwhile, the details of
`(ffi-lib #f)' will have to change for backward compatibility.


As far as I can tell or remember, RTLD_GLOBAL is mostly there to make
`(ffi-lib #f)' work, where the handle produced by `(ffi-lib #f)' finds
an export in any previously loaded library.

Since Racket keeps a table of all loaded libraries, maybe the right
change is to implement `(ffi-lib #f)' by traversing the table in
addition to using a global lookup, which means that `(ffi-lib #f)' can
work without always loading libraries with RTLD_GLOBAL. Meanwhile,
RTLD_GLOBAL could be optional behavior, as you suggest.

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Pre-Release Checklist for v5.2.1

2012-01-20 Thread Carl Eastlund
On Tue, Jan 17, 2012 at 6:44 PM, Ryan Culpepper  wrote:

> * Carl Eastlund 
>  - Dracula Tests (confirm that Dracula runs from PLaneT)
>

Done.
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] problem with require and frtime

2012-01-20 Thread Matthew Flatt
At Fri, 20 Jan 2012 13:45:35 +0100, Marijn wrote:
> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA1
> 
> On 19-01-12 14:13, Matthew Flatt wrote:
> > The `frtime' language exports an `=' that isn't the same as `=' in 
> > `racket', so that's why the pattern doesn't match. (This seems like
> > a further weakness of the `frtime' docs to specify the exports 
> > precisely.)
> > 
> > You could avoid bound names like `=' as literals in the macro. 
> > Normally, it works best for a form-exporting macro to also export 
> > bindings for any literals in the form. Otherwise, this kind of 
> > confusion is common.
> 
> I think I will change the `=' to `!' for now. What kind of binding
> should I use for `?' and `!'? There is no sensible meaning to be bound
> to them...
> What do you use to bind `else'?

The `else' from `racket/base' is bound to a macro that always complains
that `else' isn't an expression. For the implementation, see
"collects/racket/private/cond.rkt".


> When cond starts using #:else I might consider this more seriously.

For what it's worth, if I were tweaking the language unencumbered by
existing code, I really would change `else' to `#:else'.


> The reference claims that "A keyword is like an
> interned symbol, but ... and a keyword cannot be used as an
> identifier" implying that symbols can be used as identifiers.

I agree that it doesn't imply the right use of the word "symbol" and
"identifier". I'll change it, perhaps to "a keyword cannot be used to
form an identifier in the same way as a symbol".


> I have in my head from unknown source (maybe from other schemes) that
> a keyword is a value which evaluates to itself, like a constant,
> whereas symbols are produced by quoting identifiers.

In those other contexts I would say "a keyword can be used as an
expression that evaluates to itself" or "a keyword is self-quoting".

In Racket, however, a keyword is not an expression. The distinction
between a keyword and an expression exactly why I prefer a keyword when
a syntactic marker is needed. It's especially better in a case like
`else', where either the marker or an expression can appear in the same
place. (In your macro, expressions cannot appear in the same place as
`?' and `!', so the difference is less significant.)

See also

 "Keyword and Optional Arguments in PLT Scheme"
 Flatt and Barzilay, Scheme'09
 http://www.cs.utah.edu/plt/publications/scheme09-fb.pdf


_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] problem with require and frtime

2012-01-20 Thread Marijn
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 19-01-12 14:13, Matthew Flatt wrote:
> The `frtime' language exports an `=' that isn't the same as `=' in 
> `racket', so that's why the pattern doesn't match. (This seems like
> a further weakness of the `frtime' docs to specify the exports 
> precisely.)
> 
> You could avoid bound names like `=' as literals in the macro. 
> Normally, it works best for a form-exporting macro to also export 
> bindings for any literals in the form. Otherwise, this kind of 
> confusion is common.

I think I will change the `=' to `!' for now. What kind of binding
should I use for `?' and `!'? There is no sensible meaning to be bound
to them...
What do you use to bind `else'?

> Alternatively, you may want to match literals in your macro 
> symbolically instead of by binding. You can't do that easily with 
> `syntax-rules', but you can use `syntax-case*' and supply `(lambda
> (a b) (eq? (syntax-e a) (syntax-e b)))' as the literal-comparison 
> function.
> 
> If it were me and I decided to go in the direction of symbol
> equality, I'd use keywords instead --- `#:?' and `#:=' instead of
> `?' and `=' --- which makes clear that there's no question of
> binding.

When cond starts using #:else I might consider this more seriously.
The docs seem now less than clear to me about the difference between a
keyword and a symbol. The reference claims that "A keyword is like an
interned symbol, but ... and a keyword cannot be used as an
identifier" implying that symbols can be used as identifiers.

I have in my head from unknown source (maybe from other schemes) that
a keyword is a value which evaluates to itself, like a constant,
whereas symbols are produced by quoting identifiers. The difference
manifesting when multiple-evaluation comes into play: what is the
value of the value of ...

Marijn
-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.18 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk8ZYe8ACgkQp/VmCx0OL2zGjwCfT3PTlGrlicqHKo4ww0TcCicq
Ku8An3dTq+bnD+YYM5hCh61n6zadzo3h
=ScwW
-END PGP SIGNATURE-
_
  Racket Developers list:
  http://lists.racket-lang.org/dev