-
Notifications
You must be signed in to change notification settings - Fork 243
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
pl.dir: convert dir.walk from coroutines to iterators, take 2 #350
Merged
Conversation
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
alerque
approved these changes
Sep 26, 2020
I went ahead an merged #349 in hope that it would then run on this PR, but it looks like that won't happen unless the commits change or somebody restarts the Travis job for the PR (not the push, the pr since that tests what a merge to master would look like). I don't have permissions on Travis for that. I did checkout this branch locally and tested it there and it seems fine to me. |
netbsd-srcmastr
pushed a commit
to NetBSD/pkgsrc
that referenced
this pull request
Nov 23, 2020
## 1.9.1 (2020-09-27) - fix: dir.walk [#350](lunarmodules/Penlight#350) ## 1.9.1 (2020-09-24) - released to superseed the 1.9.0 version which was retagged in git after some distro's already had picked it up. This version is identical to 1.8.1. ## 1.8.1 (2020-09-24) (replacing a briefly released but broken 1.9.0 version) ## Fixes - In `pl.class`, `_init` can now be inherited from grandparent (or older ancestor) classes. [#289](lunarmodules/Penlight#289) - Fixes `dir`, `lexer`, and `permute` to no longer use coroutines. [#344](lunarmodules/Penlight#344) ## 1.8.0 (2020-08-05) ### New features - `pretty.debug` quickly dumps a set of values to stdout for debug purposes ### Changes - `pretty.write`: now also sorts non-string keys [#319](lunarmodules/Penlight#319) - `stringx.count` has an extra option to allow overlapping matches [#326](lunarmodules/Penlight#326) - added an extra changelog entry for `types.is_empty` on the 1.6.0 changelog, due to additional fixed behaviour not called out appropriately [#313](lunarmodules/Penlight#313) - `path.packagepath` now returns a proper error message with names tried if it fails ### Fixes - Fix: `stringx.rfind` now properly works with overlapping matches [#314](lunarmodules/Penlight#314) - Fix: `package.searchpath` (in module `pl.compat`) [#328](lunarmodules/Penlight#328) - Fix: `path.isabs` now reports drive + relative-path as `false`, eg. "c:some/path" (Windows only) - Fix: OpenResty coroutines, used by `dir.dirtree`, `pl.lexer`, `pl.permute`. If available the original coroutine functions are now used [#329](lunarmodules/Penlight#329) - Fix: in `pl.strict` also predefine global `_PROMPT2` - Fix: in `pl.strict` apply `tostring` to the given name, in case it is not a string. - Fix: the lexer would not recognize numbers without leading zero; "-.123". See [#315](lunarmodules/Penlight#315)
netbsd-srcmastr
pushed a commit
to NetBSD/pkgsrc
that referenced
this pull request
May 13, 2021
## 1.10.0 (2021-04-27) - deprecate: `permute.iter`, renamed to `permute.order_iter` (removal later) [#360](lunarmodules/Penlight#360) - deprecate: `permute.table`, renamed to `permute.order_table` (removal later) [#360](lunarmodules/Penlight#360) - deprecate: `Date` module (removal later) [#367](lunarmodules/Penlight#367) - feat: `permute.list_iter` to iterate over different sets of values [#360](lunarmodules/Penlight#360) - feat: `permute.list_table` generate table with different sets of values [#360](lunarmodules/Penlight#360) - feat: Lua 5.4 'warn' compatibility function [#366](lunarmodules/Penlight#366) - feat: deprecation functionality `utils.raise_deprecation` [#361](lunarmodules/Penlight#361) - feat: `utils.splitv` now takes same args as `split` [#373](lunarmodules/Penlight#373) - fix: `dir.rmtree` failed to remove symlinks to directories [#365](lunarmodules/Penlight#365) - fix: `pretty.write` could error out on failing metamethods (Lua 5.3+) [#368](lunarmodules/Penlight#368) - fix: `app.parse` now correctly parses values containing '=' or ':' [#373](lunarmodules/Penlight#373) - fix: `dir.makepath` failed to create top-level directories [#372](lunarmodules/Penlight#372) - overhaul: `array2d` module was updated, got additional tests and several documentation updates [#377](lunarmodules/Penlight#377) - feat: `aray2d` now accepts negative indices - feat: `array2d.row` added to align with `column` - fix: bad error message in `array2d.map` - fix: `array2d.flatten` now ensures to deliver a 'square' result if `nil` is encountered - feat: `array2d.transpose` added - feat: `array2d.swap_rows` and `array2d.swap_cols` now return the array - fix: `aray2d.range` correctly recognizes `R` column in spreadsheet format, was mistaken for `R1C1` format. - fix: `aray2d.range` correctly recognizes 2 char column in spreadsheet format - feat: `array2d.default_range` added (previously private) - feat: `array2d.set` if used with a function now passes `i,j` to the function in line with the `new` implementation. - fix: `array2d.iter` didn't properly iterate the indices [#376](lunarmodules/Penlight#376) - feat: `array2d.columns` now returns a second value; the column index - feat: `array2d.rows` added to be in line with `columns` ## 1.9.2 (2020-09-27) - fix: dir.walk [#350](lunarmodules/Penlight#350) ## 1.9.1 (2020-09-24) - released to superseed the 1.9.0 version which was retagged in git after some distro's already had picked it up. This version is identical to 1.8.1. ## 1.8.1 (2020-09-24) (replacing a briefly released but broken 1.9.0 version) ## Fixes - In `pl.class`, `_init` can now be inherited from grandparent (or older ancestor) classes. [#289](lunarmodules/Penlight#289) - Fixes `dir`, `lexer`, and `permute` to no longer use coroutines. [#344](lunarmodules/Penlight#344)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
I missed converting
dir.walk
on my previous PR, sorry about that! Thanks @Tieske for jumping in and making a conversion, but that approach doesn't work — I did not dissect your algorithm fully because it was definitely faster to redo it from scratch than to debug the existing one, but I noticed you were not not keeping track of a stack of pending tasks. Coroutine-based algorithms for iterators effectively exploit the call stack as a data structure; when converting them to non-coroutine-based, you need to keep that data structure elsewhere.I have not tested this extensively, but it passes both the
tests
andexamples
suites. I hadn't noticed theexamples
suite at all when I submitted #344 — thanks @alerque for the ping about it.Fixes #348.