Binding conveyance seems to be broken as of 1.6.0-alpha2

Description

With Clojure 1.5:

1 2 (def ^:dynamic *num* 1) (binding [*num* 2] (future (dotimes [_ 10] (println *num*))))

Behaves as expected: "2" prints 10 times. With Clojure 1.6.0-alpha2 the same form will print "1"s off the main thread.

This seems to be an interaction between loop/recur and the binding conveyance: the num binding does convey without the loop:

1 2 (def ^:dynamic *num* 1) (binding [*num* 2] (future (println *num*))) ; Prints "2" even with 1.6.0-alpha2

Environment

Clojure 1.6.0-alpha2
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

Status

Assignee

Unassigned

Reporter

Peter Taoussanis

Labels

None

Approval

Vetted

Patch

None

Fix versions

Affects versions

Release 1.6

Priority

Blocker
Configure