Skip to content

Commit 7fb849d

Browse files
committed
Merge branch 'master' into release-1.5
2 parents c6c9dc4 + b9be9b5 commit 7fb849d

19 files changed

+98
-62
lines changed

.github/workflows/tests.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
runs-on: ubuntu-latest
3434
strategy:
3535
matrix:
36-
racket-version: [ '7.8', '8.0', '8.1' ]
36+
racket-version: [ '8.0', '8.0', '8.2' ]
3737
precision: [ 'binary32', 'binary64' ]
3838
steps:
3939
- name: "Install Packages"
@@ -62,7 +62,9 @@ jobs:
6262
- name: "Install Packages"
6363
run: sudo apt-get install -y libmpfr6 libmpfr-dev
6464
- name: "Install Racket"
65-
uses: Bogdanp/[email protected]
65+
uses: Bogdanp/[email protected]
66+
with:
67+
version: '8.0'
6668
- name: Install Rust compiler
6769
uses: actions-rs/toolchain@v1
6870
with:
@@ -90,7 +92,9 @@ jobs:
9092
- name: "Install Packages"
9193
run: sudo apt-get install -y libmpfr6 libmpfr-dev
9294
- name: "Install Racket"
93-
uses: Bogdanp/[email protected]
95+
uses: Bogdanp/[email protected]
96+
with:
97+
version: '8.0'
9498
- name: Install Rust compiler
9599
uses: actions-rs/toolchain@v1
96100
with:
@@ -116,15 +120,14 @@ jobs:
116120
needs: [ 'hamming' ]
117121
strategy:
118122
matrix: # this takes a while: don't run too many
119-
racket-version: [ '7.9' ]
120123
precision: [ 'binary32', 'binary64' ]
121124
steps:
122125
- name: "Install Packages"
123126
run: sudo apt-get install -y libmpfr6 libmpfr-dev
124127
- name: "Install Racket"
125-
uses: Bogdanp/setup-racket@v0.5
128+
uses: Bogdanp/setup-racket@v1.3.1
126129
with:
127-
version: ${{ matrix.racket-version }}
130+
version: '8.0'
128131
- uses: actions/checkout@master
129132
- name: "Install dependencies"
130133
run: make install

src/conversions.rkt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
(submod "syntax/rules.rkt" internals) (submod "syntax/syntax.rkt" internals))
66
(provide generate-conversions generate-prec-rewrites get-rewrite-operator *conversions*)
77

8-
(define *conversions* (make-parameter (make-hash)))
8+
(define *conversions* (make-parameter (hash)))
99

1010
(define/contract (string-replace* str changes)
1111
(-> string? (listof (cons/c string? string?)) string?)
@@ -104,8 +104,8 @@
104104
(for/fold ([reprs '()]) ([conv convs])
105105
(define prec1 (first conv))
106106
(define prec2 (last conv))
107-
(hash-update! (*conversions*) prec1 (λ (x) (cons prec2 x)) '())
108-
(hash-update! (*conversions*) prec2 (λ (x) (cons prec1 x)) '())
107+
(*conversions* (hash-update (*conversions*) prec1 (λ (x) (cons prec2 x)) '()))
108+
(*conversions* (hash-update (*conversions*) prec2 (λ (x) (cons prec1 x)) '()))
109109
(generate-prec-rewrite prec1 prec2)
110110
(set-union reprs (list (get-representation prec1) (get-representation prec2)))))
111111
(*needed-reprs* (set-union reprs (*needed-reprs*))))

src/core/localize.rkt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,10 @@
1616
(hash-ref! cache expr
1717
(λ ()
1818
(match expr
19+
[(? number?)
20+
(cons (repeat (bf expr)) (repeat 1))]
1921
[(? constant?)
20-
(define val
21-
(if (symbol? expr)
22-
((constant-info expr 'bf))
23-
(bf expr)))
22+
(define val ((constant-info expr 'bf)))
2423
(cons (repeat val) (repeat 1))]
2524
[(? variable?)
2625
(cons (map (curryr representation-repr->bf (dict-ref (*var-reprs*) expr))
@@ -61,7 +60,7 @@
6160
(register-reset
6261
(λ ()
6362
(*analyze-context* (*pcontext*))
64-
(hash-clear! *analyze-cache*)))
63+
(set! *analyze-cache* (make-hash))))
6564

6665
(define (localize-error prog repr)
6766
(define varmap (map cons (program-variables prog)
@@ -82,6 +81,7 @@
8281
(unless (andmap (curry = 1) err)
8382
(sow (cons err (reverse loc))))
8483
(match expr
84+
[(? number?) (void)]
8585
[(? constant?) (void)]
8686
[(? variable?) (void)]
8787
[(list 'if cond ift iff)

src/core/matcher.rkt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
(define (fail . irr) #f)
3131

3232
(match pattern
33+
[(? number?)
34+
(and (equal? pattern expr) '())]
3335
[(? constant?)
3436
(and (equal? pattern expr) '())]
3537
[(? variable?)
@@ -45,6 +47,7 @@
4547
(define (pattern-substitute pattern bindings)
4648
; pattern binding -> expr
4749
(match pattern
50+
[(? number?) pattern]
4851
[(? constant?) pattern]
4952
[(? variable?)
5053
(dict-ref bindings pattern)]
@@ -120,6 +123,9 @@
120123
(match pattern
121124
[(? variable?)
122125
(sow (cons '() (list (cons pattern expr))))]
126+
[(? number?)
127+
(when (equal? expr pattern)
128+
(sow (cons '() '())))]
123129
[(? constant?)
124130
(when (equal? expr pattern)
125131
(sow (cons '() '())))]

src/core/reduce.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
(define (simplify expr*)
2020
(define expr ((get-evaluator) expr*))
2121
(match expr
22+
[(? number?) expr]
2223
[(? constant?) expr]
2324
[(? variable?) expr]
2425
[`(λ ,vars ,body)
@@ -47,6 +48,7 @@
4748

4849
(define (simplify-node expr)
4950
(match expr
51+
[(? number?) expr]
5052
[(? constant?) expr]
5153
[(? variable?) expr]
5254
[(or `(+ ,_ ...) `(- ,_ ...) `(neg ,_))

src/core/simplify.rkt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -185,12 +185,9 @@
185185
(define (munge expr)
186186
;; Despite the name, `expr` might be an expression OR a pattern
187187
(match expr
188-
[(? constant?)
189-
(if (symbol? expr)
190-
(list expr)
191-
expr)]
192-
[(? variable?)
193-
expr]
188+
[(? number?) expr]
189+
[(? constant?) (list expr)]
190+
[(? variable?) expr]
194191
[(list head subs ...)
195192
(cons head (map munge subs))]))
196193

src/core/taylor.rkt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,8 @@
9393

9494
(register-reset
9595
(λ ()
96-
(hash-clear! n-sum-to-cache)
97-
(hash-clear! logcache)
98-
(hash-set! logcache 1 '((1 -1 1)))))
96+
(set! n-sum-to-cache (make-hash))
97+
(set! logcache (make-hash '((1 . ((1 -1 1))))))))
9998

10099
(define (taylor var expr*)
101100
"Return a pair (e, n), such that expr ~= e var^n"
@@ -106,6 +105,8 @@
106105
(match expr
107106
[(? (curry equal? var))
108107
(taylor-exact 0 1)]
108+
[(? number?)
109+
(taylor-exact expr)]
109110
[(? constant?)
110111
(taylor-exact expr)]
111112
[(? variable?)

src/debug.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
(= val1 val2)
3030
(equal? val1 val2)))
3131

32-
(define *cur-debug-levels* (make-hash))
32+
(define *cur-debug-levels* (make-hasheq))
3333
;; To understand this it might be useful to understand the system.
3434
;; The current level of any debug flag is fluid, within a range.
3535
;; It's "setting" determines the range, or a fixed value,

src/errors.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,5 +81,5 @@
8181

8282
(register-reset
8383
(λ ()
84-
(set-clear! warnings-seen)
84+
(set! warnings-seen (mutable-set))
8585
(set! warning-log '())))

src/function-definitions.rkt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#lang racket
22

3-
(require "config.rkt" "syntax/rules.rkt" "core/matcher.rkt" "programs.rkt" "interface.rkt" "syntax/sugar.rkt")
3+
(require "config.rkt" "syntax/rules.rkt" "core/matcher.rkt""programs.rkt" "interface.rkt" "syntax/sugar.rkt")
44
(provide get-expander get-evaluator)
55

66
(define (evaluation-rule? rule)
@@ -13,6 +13,7 @@
1313

1414
(define (all-ops expr good?)
1515
(match expr
16+
[(? number?) #t]
1617
[(? constant?) #t]
1718
[(? variable?) #t]
1819
[(list f args ...)
@@ -21,6 +22,11 @@
2122
(define expanders (make-hash))
2223
(define evaluators (make-hash))
2324

25+
(register-reset
26+
(λ ()
27+
(set! expanders (make-hash))
28+
(set! evaluators (make-hash))))
29+
2430
(define (make-expander primitives)
2531
(define known-functions (make-hash))
2632
(for ([op primitives])

0 commit comments

Comments
 (0)