Skip to content
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

Backwards incompatible changes for "is_empty" in 1.6+ #313

Closed
GUI opened this issue Oct 29, 2019 · 1 comment
Closed

Backwards incompatible changes for "is_empty" in 1.6+ #313

GUI opened this issue Oct 29, 2019 · 1 comment

Comments

@GUI
Copy link

GUI commented Oct 29, 2019

The changelog notes a fix for is_empty behavior for tables with boolean keys in 1.6.0, but the changes in 1.6+ appear to be more extensive than that. In 1.5.4, is_empty returned false for many other object types that now return true in 1.6-1.7. Examples:

  • Penlight 1.5.4
    -- Numbers
    is_empty(0) -- false
    is_empty(20) -- false
    -- Booleans
    is_empty(false) -- false
    is_empty(true) -- false
    -- Functions
    is_empty(print) -- false
    -- Userdata
    is_empty(newproxy()) -- false
  • Penlight 1.6.0-1.7.0
    -- Numbers
    is_empty(0) -- true
    is_empty(20) -- true
    -- Booleans
    is_empty(false) -- true
    is_empty(true) -- true
    -- Functions
    is_empty(print) -- true
    -- Userdata
    is_empty(newproxy()) -- true

This appears related to the changes made in #267, which defaults is_empty to true for all unchecked cases, rather than false. A few additional tests were added in #279 which indicate the expected value for is_empty for at least numbers and booleans is true, but I wanted to confirm if these changes were actually intentional.

I personally find the is_empty behavior in 1.5 to more align with my expectations, since I wouldn't necessarily anticipate numbers, booleans, functions, or userdata to be considered "empty." But if this change is intentional and is_empty is really only intended to be used to check strings, tables, and nil types, then should this change in behavior maybe be called out more explicitly in the CHANGELOG, since this change in behavior could have more impact than expected?

@Tieske
Copy link
Member

Tieske commented Jul 30, 2020

thx for the report, the new behaviour also complies with the documentation.

@Tieske Tieske closed this as completed in 106dcfd Jul 30, 2020
bungle added a commit to Kong/kong that referenced this issue Aug 6, 2020
### Summary

#### 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)
dndx pushed a commit to Kong/kong that referenced this issue Aug 12, 2020
### Summary

#### 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)
Tieske pushed a commit to Kong/kong that referenced this issue Sep 22, 2020
### Summary

#### 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)
bungle added a commit to Kong/kong that referenced this issue Sep 23, 2020
### Summary

#### 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)
bungle added a commit to Kong/kong that referenced this issue Sep 24, 2020
### Summary

#### 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)
bungle added a commit to Kong/kong that referenced this issue Sep 27, 2020
### Summary

#### 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 issue 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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants