Matthew Flatt | 23 Jun 15:36 2015
Picon

shadowing imports with definitions

I've pushed a change to `module` so that a definition can shadow any
import, not just initial imports from the `#lang` line.

This change is intended to reduce compatibility problems that are
created by adding an export to an existing library. The change doesn't
avoid or solve the problem in general, because conflicting imports
still trigger an error. So, it's still better to avoid adding exports
where there's a good chance of conflicts (e.g., because the added name
is short or follows a common pattern). This change might provide a
useful amount of flexibility when adding an export really seems better.

I'm sure we've discussed this change before, and I have been opposed.
Unlike the initial import, where all bindings within a module could be
considered nested under it, other `require`s and definitions all bind
in the same scope within a module. Sam has convinced me that more
liberal shadowing is worth a try, anyway.

For now, order matters: definitions can only shadow bindings from
preceding `require`s. Lifting that constraint, so that a definition can
effectively suppress a later import, may or may not be a good idea; in
any case, it's tricky with the old macro expander, and we can revisit
this ordering question later (if the initial experiment works out).
It's possible for an imported macro to be used in an expansion before a
shadowing definition is discovered, as in internal definition contexts.
An identifier still cannot be imported multiple times (with different
bindings) or defined multiple times.

Naturally, I advise against intentionally writing code that depends on
shadowing imports, not only because it makes code less clear, but
because we should revert the change if the experiment doesn't turn out
(Continue reading)

Sam Tobin-Hochstadt | 12 Jun 20:26 2015
Picon
Picon

Re: Release Announcement for v6.2, Second Draft

That sounds good.

On Fri, Jun 12, 2015 at 2:20 PM Robby Findler <robby-5YcgHWA4rVnfxgxxWyf0drK6bRJNSFrb@public.gmane.org> wrote:
How about something more like this for the first one:

"The git repository for Racket development no longer contains most of
the packages distributed with the release. Instead, they are now in
their own git repositories (which has lots of incidental benefits
ranging from more focused history to smaller team formation to less
code in the privileged repo), thanks to help from our new pkg system."

Robby



On Fri, Jun 12, 2015 at 12:08 PM, Sam Tobin-Hochstadt
<samth-9wNiWmoEw/g@public.gmane.organa.edu> wrote:
> On Fri, Jun 12, 2015 at 12:53 PM, Ryan Culpepper <ryanc-1vnkWVZi4QaVc3sceRu5cw@public.gmane.org> wrote:
>> The release announcement sketch that I have so far is below.  Please
>> mail me new items and/or edits.
>> ----------------------------------------------------------------------
>>
>> - split repository (samth 29873382)
>
> The git repository for Racket development no longer contains most of the
> packages distributed with the release.
>
>> * Typed Racket now displays tooltips in DrRacket that show the types of
>>    expressions. Tooltips are also displayed for type errors.
>
> * Typed Racket no longer loads generated contracts unless they are needed,
> reducing memory use and startup time for Typed Racket programs.
>
> * Typed Racket now better supports prefab structures, future
> semaphores, and async channels.
>
> * Typed Racket now tracks the relationship between different
> variables, which makes programs using macros like `match` work better.
>
> --
> 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+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
> To post to this group, send email to racket-dev-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
> To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/CAK%3DHD%2BY4i%3DDbxDdieutV%2BneTjvnMSZDnUA9mEm1-6u_wkeVJrQ%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

--
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+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To post to this group, send email to racket-dev-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/CAL3TdOPYcuy9JPotuxYTZbCmd-o2_6m4SW2F5O4OzQiAAkONig%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

--
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+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To post to this group, send email to racket-dev-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/CAK%3DHD%2BaU43L24EHMGBnER-_sCEzrp%3Dt73KnKAV4NtL-6iZvJ3Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Sam Tobin-Hochstadt | 12 Jun 19:08 2015
Picon
Picon

Re: Release Announcement for v6.2, Second Draft

On Fri, Jun 12, 2015 at 12:53 PM, Ryan Culpepper <ryanc@...> wrote:
> The release announcement sketch that I have so far is below.  Please
> mail me new items and/or edits.
> ----------------------------------------------------------------------
>
> - split repository (samth 29873382)

The git repository for Racket development no longer contains most of the
packages distributed with the release.

> * Typed Racket now displays tooltips in DrRacket that show the types of
>    expressions. Tooltips are also displayed for type errors.

* Typed Racket no longer loads generated contracts unless they are needed,
reducing memory use and startup time for Typed Racket programs.

* Typed Racket now better supports prefab structures, future
semaphores, and async channels.

* Typed Racket now tracks the relationship between different
variables, which makes programs using macros like `match` work better.

--

-- 
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+unsubscribe@...
To post to this group, send email to racket-dev@...
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/CAK%3DHD%2BY4i%3DDbxDdieutV%2BneTjvnMSZDnUA9mEm1-6u_wkeVJrQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Ryan Culpepper | 12 Jun 18:53 2015

Release Announcement for v6.2, Second Draft

The release announcement sketch that I have so far is below.  Please
mail me new items and/or edits.
----------------------------------------------------------------------

- split repository (samth 29873382)

* The package manager supports a direct references to Git repositories
   via "git://[...]", "http://[...].git", and "https://[...].git" URLs.
   (Previously, only references to GitHub were supported.)

* A `--clone` option for `raco pkg install` or `raco pkg update`
   further facilitates Git-based package development. For example, if a
   package X has a Git repository source, then installing and updating
   the package pulls from the repository, but in a read-only mode by
   default. Using `raco pkg update --clone X` switches the local
   installation to a repository checkout that is suitable for modifying
   the package implementation, pushing changes, issuing pull requests,
   and so on. Using `raco pkg update --lookup X` switches the package
   back to the default installation mode.

* Added data/enumerate: a library that supports efficient enumeration of
   data structures.

* DrRacket's online check syntax works with images and other non-text
   content.

* DrRacket's blueboxes are available more often and contain methods and
   constructor information.

* DrRacket's "Open Require Path" menu item supports ".." in relative
   pathnames.

* Redex's redex-check uses enumeration to try to find counter-examples
   (in addition to using random generation, as before).

* Redex's generate-term accepts additional arguments to return the
   "i"-th member of a pattern using data/enumerate (meaning it
   efficiently supports very large values of "i").

* Redex's examples include Launchbury's 1993 big-step lazy semantics.

* 2htdp/image: allow "polygons" to be built out of bezier curves instead
   of just straight lines (see the docs for "pulled-point").

* The teaching languages come with a new teachpack, 2htdp/abstraction,
   which allows instructors and students to use a number of abstractions
   in ISL: for/* loops, match, define-type and type-cases.

* DrRacket's executable creation mechanism works with 2htdp/universe
   programs (and they behave properly when run independently of
   drracket).

* Typed Racket now displays tooltips in DrRacket that show the types of
   expressions. Tooltips are also displayed for type errors.

samth:
- avoid requiring contracts when not used (8ea8c54e)

other potential Typed Racket items:
- Support for prefab structs (no contracts)
- Support for FSemaphores
- Let-aliasing
- #:implements/inits in Class types
- Type aliases allowed in class bodies
- Occurrence typing for private fields in classes
- Improvements in libraries like typed/rackunit, typed/net/url, others
- for/set, for*/set added
- contracts for Async-Channelof

----------------------------------------------------------------------

--

-- 
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+unsubscribe@...
To post to this group, send email to racket-dev@...
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/557B0EA5.1030900%40ccs.neu.edu.
For more options, visit https://groups.google.com/d/optout.

Ryan Culpepper | 5 Jun 15:46 2015

Release Announcement for v6.2

The release announcement sketch that I have so far is below.  Please
mail me new items and/or edits.

** The items below are from the main repository only. Please
    review your package repositories for items after the split.

----------------------------------------------------------------------

- split repository (samth 29873382)

mflatt:
- git pkg support (babd4202, bbf154ba, fbdfa365)
- impersonator protocol changes (0b71b848)
- logging changes (65e323d2, 83b45957, 83b45957, 58eb8024)
- restore Cygwin support (cceda783)
- "raco pkg {install,update} --clone" (6379aadd)
- Unicode 7.0 (9c7d0b87)
- iOS? (af6c3961)

robby:
- avoid redundant instanceof/c contracts (e589f591)

ryanc:
- openssl: use TLS by default (933a71ce)

samth:
- avoid requiring contracts when not used (8ea8c54e)

asumu:
- type tooltips (c2abbc70)

jay:
- data/enumerate (981a68bb)

----------------------------------------------------------------------

--

-- 
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+unsubscribe@...
To post to this group, send email to racket-dev@...
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/5571A84D.8020902%40ccs.neu.edu.
For more options, visit https://groups.google.com/d/optout.

Ryan Culpepper | 28 May 21:12 2015

sandboxes and libraries that use the ffi

The following interaction fails:

  > (require racket/sandbox)
  > (define sb-eval
      (make-evaluator 'racket/base
                      #:allow-for-require '(math)))
  > (sb-eval '(require math))
  current-directory: `exists' access denied for /tmp/ryan/
    context...:
     /Applications/Racket v6.1.1/collects/setup/dirs.rkt:291:2: dll-dir
     /Applications/Racket v6.1.1/collects/racket/promise.rkt:70:15
     /Applications/Racket v6.1.1/collects/racket/private/more-scheme.rkt:264:2: call-with-exception-handler
     /Applications/Racket v6.1.1/collects/racket/promise.rkt:38:2
     /Applications/Racket v6.1.1/collects/setup/dirs.rkt:167:7: get-lib-search-dirs
     /Applications/Racket v6.1.1/collects/racket/private/so-search.rkt:28:0: so-find
     /Applications/Racket v6.1.1/collects/racket/runtime-path.rkt:83:9
     /Applications/Racket v6.1.1/collects/racket/runtime-path.rkt:81:0: resolve-paths
     /Applications/Racket v6.1.1/share/pkgs/math-lib/math/private/bigfloat/gmp.rkt: [running body]
     /Applications/Racket v6.1.1/share/pkgs/math-lib/math/private/bigfloat/mpfr.rkt: [traversing imports]
     /Applications/Racket v6.1.1/share/pkgs/math-lib/math/private/bigfloat/bigfloat-mpfr.rkt:
[traversing   imports]
     /Applications/Racket v6.1.1/share/pkgs/math-lib/math/private/bigfloat/bigfloat-struct.rkt:
[traversing imports]
     /Applications/Racket v6.1.1/share/pkgs/math-lib/math/bigfloat.rkt: [traversing imports]
     /Applications/Racket v6.1.1/share/pkgs/math-lib/math/private/polynomial/chebyshev.rkt:
[traversing imports]
     /Applications/Racket v6.1.1/share/pkgs/math-lib/math/private/functions/stirling-error.rkt:
[traversing imports]
     /Applications/Racket v6.1.1/share/pkgs/math-lib/math/private/flonum/flonum-factorial.rkt:
[traversing imports]…

The problem seems to be that the math library wants to load a foreign library (mpfr), but the sandbox
security guard is getting in its way. In other words, the allow-for-require blessing does not extend to
the FFI.

Question 1: Is there an easy workaround for this particular issue? (Other than broadly relaxing the
security guard?)

Question 2: Is there anything the math library (and other libraries that use ffi bindings) could do to make
this automatically work?

Ryan

--

-- 
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+unsubscribe@...
To post to this group, send email to racket-dev@...
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/A9264300-7591-46A6-9C18-237CE8F83AEA%40ccs.neu.edu.
For more options, visit https://groups.google.com/d/optout.

Sam Tobin-Hochstadt | 26 May 01:21 2015
Picon
Picon

Re: Another in-range problem in TR

I would say that the real problem is simply an un-annotated function
argument. If you add an appropriate annotation for `i`, everything
works. Typed Racket works hard to help when you don't annotate things,
but in general you need to annotate function arguments, and loop
variables are just an instance of that. I don't think rewriting the
`for` macros will get around that problem.

Sam

On Mon, May 25, 2015 at 5:59 PM, Vincent St-Amour <stamourv@...> wrote:
> As Alex said.
>
> The problem is not with `in-range`, but rather with TR's inference
> having trouble with the loop in the expansion of `for`.
>
> Asumu has been working on new versions of the `for` forms which should
> play nicer with inference. Those should hopefully solve this problem.
>
> Vincent
>
>
>
>
> At Sun, 24 May 2015 13:54:44 -0400,
> Alexander D. Knauth wrote:
>>
>> This happens because for treats in-range specially, so the expanded code
>> doesn’t use in-range at all, and TR doesn’t recognize that it originally
>> came from a use of in-range.
>>
>> This fixes it:
>> #lang typed/racket
>> (for ([i (identity (in-range 0 1 1/10))])
>> (display i))
>>
>> And this also fixes it:
>> #lang typed/racket
>> (for ([i (in-range (ann 0 Exact-Rational) 1 1/10)])
>> (display i))
>>
>> On May 24, 2015, at 1:36 PM, Antonio Menezes Leitao
>> <antonio.menezes.leitao@...> wrote:
>>
>>     Hi,
>>
>>
>>     The following code triggers a type error:
>>
>>
>>
>>     (for ([i (in-range 0 1 1/10)])
>>     (display i))
>>
>>
>>
>>     Type Checker: type mismatch
>>     expected: Integer
>>     given: Exact-Rational in: (for ((i (in-range 0 1 1/10))) (display
>>     i))
>>
>>
>>     Note that, in Racket, in-range expect Numbers as arguments (and not
>>     Integers).
>>
>>
>>     The following one works fine:
>>
>>
>>
>>     (for ([i (range 0 1 1/10)])
>>     (display i))
>>
>>
>>     Is this the intended behavior?
>>
>>
>>     Best,
>>     António.
>>
>>
>>     --
>>     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+unsubscribe@...
>>     To post to this group, send email to racket-dev@...
>>     To view this discussion on the web visit
>>     https://groups.google.com/d/msgid/racket-dev/CAJQmiZXfD_8sTauRy07mY8QA9aQwsT_
>>     89o-%3D6u-PE3b9K0GKgw%40mail.gmail.com.
>>     For more options, visit https://groups.google.com/d/optout.
>>
>> --
>> 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+unsubscribe@...
>> To post to this group, send email to racket-dev@...
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/racket-dev/4B26BC02-C80B-4EB5-8B51-9474E88B4D84%40knauth.
>> org.
>> For more options, visit https://groups.google.com/d/optout.
>
> --
> 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+unsubscribe@...
> To post to this group, send email to racket-dev@...
> To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/m2r3q4xqrd.wl-stamourv%40ccs.neu.edu.
> For more options, visit https://groups.google.com/d/optout.

--

-- 
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+unsubscribe@...
To post to this group, send email to racket-dev@...
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/CAK%3DHD%2BZH6Mzxdu5U8v%2BtsW8Swdv3sVe5jSzZS4tF2m8G2DQvMg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Antonio Menezes Leitao | 24 May 19:36 2015
Picon

Another in-range problem in TR

Hi,

The following code triggers a type error:

(for ([i (in-range 0 1 1/10)])
  (display i))

Type Checker: type mismatch
  expected: Integer
  given: Exact-Rational in: (for ((i (in-range 0 1 1/10))) (display i))

Note that, in Racket, in-range expect Numbers as arguments (and not Integers).

The following one works fine:

(for ([i (range 0 1 1/10)])
  (display i))

Is this the intended behavior?

Best,
António.

--
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+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To post to this group, send email to racket-dev-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/CAJQmiZXfD_8sTauRy07mY8QA9aQwsT_89o-%3D6u-PE3b9K0GKgw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

FYI firefox nightly issue

JFYI: Firefox Nightly (the super-bleeding-edge nightly build of Firefox) will show you a blank page every
time you visit Racket’s Help Desk. This is because of bug #1146969, which won’t allow a sandboxed
browser window to open any file in ~/Library. This will probably never be a problem for most users, since
this bug will presumably be fixed before sandboxing becomes a part of stable Firefox. If you start seeing
documentation pages coming up blank in Firefox, though, you can check on the status of this bug.

https://bugzilla.mozilla.org/show_bug.cgi?id=1146969

--

-- 
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+unsubscribe@...
To post to this group, send email to racket-dev@...
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/B949FBD4-0803-4AEA-A599-5779420C6D92%40brinckerhoff.org.
For more options, visit https://groups.google.com/d/optout.

Ryan Culpepper | 22 May 22:16 2015

Pre-Release Checklist for v6.2, Second Call

Checklist items for the v6.2 release
   (using the v6.1.91.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-release.racket-lang.org

Please use these installers (or source bundles) -- don't test from
your own git clone (don't test the `master' branch by mistake!).  To
get the tests, you can do this:

   cd ...racket-root...
   ./bin/raco pkg install -i main-distribution-test

----------------------------------------------------------------------

* Matthias Felleisen <matthias@...>
   - check-satisfied?

* Ryan Culpepper <ryanc@...>
   - DB Tests
   Release tests for (one of the) linux releases:
   - Test that the `racket' and `racket-textual' source releases
     compile fine (note that they're still called `plt' and `mz' at
     this stage).
   - Test that the binary installers for both work, try each one in
     both normal and unix-style installation modes. (just ubuntu)
   [Note: get the release candidates from the URL in this email. Use
    the 'static table' link to see a list of all tar files available]

* Stephen Bloch <sbloch@...>
   - Picturing Programs Tests

* David Van Horn <dvanhorn@...>
   - EoPL Tests

* Neil Toronto <neil.toronto@...>
   - Plot Tests
   - Images Tests
   - Inspect icons
   - Math tests

--

-- 
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+unsubscribe@...
To post to this group, send email to racket-dev@...
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/555F8EAF.5040107%40ccs.neu.edu.
For more options, visit https://groups.google.com/d/optout.

Sam Tobin-Hochstadt | 19 May 14:58 2015
Picon
Picon

Re: FFI: Too much error checking?

On Tue, May 19, 2015 at 8:50 AM, Matthew Flatt <mflatt@...> wrote:
> At Sun, 17 May 2015 10:32:15 +0100, Laurent wrote:
>> The following recent change breaks rwind/x11 [1, 2]:
>> https://github.com/plt/racket/commit/ad899173b97ce2ca51612a496d17ea32db45ecdc#di
>> ff-4f20ebf5b6abb6ab4c0b80b41efa1614R819
>>
>> Now when running rwind, it fails with:
>> _enum: key is not a symbol
>>   symbols: '(2)
>>   key: 2
>>   value: 3
>>   context...:
>>    /usr/share/racket-6.2.0.3/collects/ffi/unsafe.rkt:832:2: loop
>>    /usr/share/racket-6.2.0.3/collects/ffi/unsafe.rkt:821:0: unpack63
>>    /home/orseau/Unison/Prog/Racket/x11/x11/x11.rkt: [running body]
>>    /home/orseau/Unison/Prog/Racket/rwind/color.rkt: [traversing imports]
>>    /home/orseau/Unison/Prog/Racket/rwind/rwind.rkt: [traversing imports]
>>
>> Unfortunately, I couldn't get a better error stacktrace, even with `racket
>> --no-jit -l errortrace`.
>>
>> I'm having trouble debugging this, as it's hidden under piles of FFI calls,
>> but would allowing for integers in place of symbols be really a bad idea
>> here?
>
> The old treatment of integers in `_enum` was not intentional, but I
> think it would count as a bad idea if it had been intentional:

This behavior seems clearly like a bad idea starting from scratch, but
is fixing it worth the backwards incompatibility?

An alternative might be a dynamic error instead of converting 2 to 3.

Sam

--

-- 
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+unsubscribe@...
To post to this group, send email to racket-dev@...
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/CAK%3DHD%2BaQ9zGUUejWjSNMbFr1h4Z8Hyq1WeB%3D2QStO9KF3Tkpwg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Gmane