-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deforest All the Things #179
Merged
Merged
Changes from 1 commit
Commits
Show all changes
113 commits
Select commit
Hold shift + click to select a range
3dc3871
List-ref and cad*r deforestation
dzoep 83384fb
Deforestation of length, empty?, and null?.
dzoep cf0b178
Deforest filter-map.
dzoep 9d9c064
Pass deforested operation name in cad*r-cstream-next.
dzoep f315281
Fix failing car-deforested? test.
dzoep 6df1eca
Cleaner syntax matching and production separation.
dzoep 56f880a
Split compiler passes into separate modules.
dzoep 5813c77
Move deforestation infrastructure into passes subdirectory.
dzoep 30d812e
Finish fixing all the things broken by the rebase.
dzoep 8ade245
Improve directory and module naming
dzoep 04ca289
Deforest take with boxes.
dzoep bcb3118
Implement proper state cons-ing for take.
dzoep 301a542
Add source syntax context to transformer composition.
dzoep a0381d7
New qi/list bindings and their literal matching, stateful transformer…
dzoep 6fd8a93
Deforestation: rename all fusable stream syntax classes to fs[PTC]-sy…
dzoep 1975925
Fix tests of qi/list - use the new bindings.
dzoep 0134706
Split bindings module and add appropriate scribblings.
dzoep 3288d0e
Update PR#175 with all the changes agreed upon at the weekly Qi compi…
dzoep 536c75d
Fix phase shifting for fusion.rkt module.
dzoep ff5a395
Add attach-form-property to both places needed by current deforestati…
dzoep 97a845d
Remove unused `require`
countvajhula 510acb9
Introduce a `#%deforestable` core form
countvajhula 0bed239
support basic cases of filter, map, foldl, foldr and range
countvajhula c213e80
a couple more tests for `range`
countvajhula c185564
formatting..
countvajhula cc8cf45
temporarily comment out some tests
countvajhula c6ee0b4
register deforestation pass in core
countvajhula e3eba11
Simplify #%deforestable syntax initially
countvajhula 0dc8fe4
modify benchmarks and tests to work with simplified `range` syntax
countvajhula b48a276
Match `#%deforestable` in deforesting `map` and `filter`
countvajhula 2d878fb
Remove tests that ensure only right-threading is deforested
countvajhula 580b380
Match `#%deforestable` in `foldl` and `foldr`
countvajhula 0269159
Match `#%deforestable` in deforesting `car`
countvajhula c6dfd57
Use `#%deforestable` in `cadr`, `caddr`, `cadddr`
countvajhula 33f2b58
Use `#%deforestable` in `list-ref`
countvajhula 9c9ff0a
Use `#%deforestable` in `length`
countvajhula 208aa1b
Use `#%deforestable` in `empty?` and `null?`
countvajhula d3535b5
Write `filter-map` as a macro expanding to `#%deforestable`
countvajhula a890931
Match `#%deforestable` in deforesting take instead of a host expression
countvajhula 1130b8d
simplify `range` syntax matching for now
countvajhula 11eef9e
mysterious fix for test errors
countvajhula 78e57c5
lint..
countvajhula 5314024
A few basic tests for deforested forms
countvajhula cecd4e1
Codegen floe positions in #%deforestable
countvajhula 28c2408
New syntax for `#%deforestable` distinguishing `floe` positions
countvajhula c3e099f
Use the new `#%deforestable` syntax
countvajhula 03cc55c
Compile higher-order `floe` positions in deforestation pass
countvajhula 50974c1
Surface tests for `qi/list` forms
countvajhula e117146
Incorporate deforestation semantics tests into surface qi/list tests
countvajhula 81184e7
remove copypasta test
countvajhula 3360d42
Test list forms using higher-order Qi syntax
countvajhula f7d5e30
Remove unused module providing bindings for deforestation
countvajhula 7f87f94
Fix syntax error in benchmarks
countvajhula 617858a
Remove Racket `range` import in benchmarks
countvajhula 81c9f5d
test the expansion of `#%deforestable`
countvajhula b6d3a7f
Test syntax error using `range` with no arguments
countvajhula 1140870
Tests for `list-ref`
countvajhula f439d08
Add a test for a syntax error utility
countvajhula eb5e395
Modify a `range` test to use syntax with an explicit bound argument
countvajhula 48cdb8e
Update deforestation rules tests
countvajhula ecb5856
Add a commented-out failing test for a case of desired deforestation
countvajhula 14c41d9
refile the failing test (it now passes)
countvajhula 9d72acd
Use `define-dsl-syntax` instead of `define-qi-syntax`
countvajhula 0ee3d18
Integrate POC extension of deforestation to implement `map`
countvajhula e84d87f
Add a `name` argument to `define-deforestable`
countvajhula 39d0aba
`make` target to run just `qi/list` tests
countvajhula 4d29ede
translate `filter` to use `define-deforestable`
countvajhula ce964f0
translate `filter-map` to use `define-deforestable`
countvajhula 0db81b0
translate `foldl` and `foldr`
countvajhula 1a5e4d1
translate `take` to use `define-deforestable`
countvajhula ae06392
format like ordinary definitions
countvajhula 2e376f9
fix ignored variable name
countvajhula 45f29ec
adopt style suggestion from Ben / resyntax (cr)
countvajhula 19d5068
translate `car`, `cad*r` etc., and `list-ref`
countvajhula a5f2652
declare `deforestable2` as a datum literal
countvajhula 8a5d650
translate `length` to use `define-deforestable`
countvajhula f6cecbb
translate `empty?` and (its alias) `null?` to `define-deforestable`
countvajhula c047a01
Use the "clever hack" to translate `range`
countvajhula 0df7823
Be cleverer in hiding the "clever hack"
countvajhula 3f8a7c4
adopt `syntax-parse` idiom for errors (cr)
countvajhula c9db34c
Fully replace `#%deforestable` with the new implementation
countvajhula 607bd65
Improve handling of identifier forms of deforestable syntax
countvajhula 85ef9e7
declare `#%deforestable` as a literal in `fs-literals` (cr)
countvajhula 61f6561
Improve error message when a form is used as an identifier
countvajhula 4d6ed0d
Merge pull request #185 from countvajhula/defining-deforestable-opera…
countvajhula 186841d
Support `lambda` (and `λ`) as a core form
countvajhula 0c504f2
Remove unused utility
countvajhula 72f8031
doc: the new `lambda` form
countvajhula 4a45a19
Merge pull request #177 from countvajhula/lambda-core-form
countvajhula ccb54b4
formally document the syntax
countvajhula 9e7f781
distinguish core and macro forms in full syntax
countvajhula d6d43aa
link `floe` to the tech definition instead of the containing section
countvajhula 723352f
update intro in qi/list docs
countvajhula 9dd488c
Merge pull request #186 from countvajhula/update-docs-for-deforestable
countvajhula 7e94a65
Update list-operations scribblings.
dzoep 00e1da6
Merge pull request #187 from dzoep/deforest-all-the-things
dzoep 62cdc19
address code review comments re: docs
countvajhula 8b71624
doc: distinguish `floe` from `flow`
countvajhula 9dff1ae
cr: add `range` syntax variants that were missing
countvajhula efe3268
change deforestable "spec" syntax
countvajhula 760f517
Merge pull request #188 from countvajhula/address-code-review
countvajhula db48273
Add Makefile target to use the "preview" profile in `vlibench`
countvajhula db7fe61
Improve Makefile targets for testing
countvajhula 6797eb3
test a few cases that weren't covered
countvajhula 04589f2
Add `#%deforestable` to the de-expander
countvajhula 17fafe7
test for de-expanding `#%deforestable`
countvajhula 6bf3e07
wrap benchmarks with lambda to accommodate new `range`
countvajhula ffc767e
Address "unused dependencies" warnings (fix #174)
countvajhula 4b1ba3f
Use of left-threading for list operations in docs
countvajhula 07ecec5
Add competitive benchmark for take of 1/3 the input size.
dzoep 1753277
rename "impl" modules to "runtime", as discussed some time ago
countvajhula 3d661fb
add back symbolic aliases that got dropped at some point
countvajhula f84dc92
Add COPYING file containing public domain dedication
countvajhula File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RE: dropping symbolic aliases in 3d661fb (add back symbolic aliases that got dropped at some point, 2025-01-15), I think they disappeared in c609625 (extract more non-core forms as macros, 2022-08-25), which is contained in v4.0!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At least,
git log -S <alias> upstream/deforest-all-the-things
finds that commit for both AND and OR; for NOT, I haven't managed to find the removal yet.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Whoops, guess they've been gone quite a while 😬 Actually, they might have slipped out as early as the addition of Syntax Spec (was that 3.0?), as it's quite possible we just neglected to add the aliases to the
provide
form in the expander at the time. Prior to that, just having the datum matching of the symbolic variants in the originalflow
macro was sufficient for them to be part of the "core"/flat language. While the rules of that original macro carried over toqi0->racket
, the ground truth for the core language switched to being the syntax spec in the expander, and it just might have slipped through the cracks then.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That explains why the "pair with MB" commit came up a few times in my search. I definitely wasted too much time looking though: I probably should have tried
git bisect
.