Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
388ef8c
implementing NSE to cube
coffeecookey Dec 28, 2025
3e96dfc
implementing NSE in cube
sisyphuswastaken Dec 28, 2025
e1eb87a
removed trailing whitespace
sisyphuswastaken Dec 28, 2025
b6adef9
removed trailing whitespace
sisyphuswastaken Dec 28, 2025
47bb2c3
revised implementation of NSE in cube
sisyphuswastaken Dec 31, 2025
33572b5
Merge branch 'master' into master
sisyphuswastaken Dec 31, 2025
e9876cb
cleaning up the code
sisyphuswastaken Dec 31, 2025
2a15cb9
more cleaning
sisyphuswastaken Dec 31, 2025
0ae97fa
removed unnecessary changes to code
sisyphuswastaken Dec 31, 2025
7215a4c
adding some tests to the code
sisyphuswastaken Jan 1, 2026
2b7b7ff
more tests
sisyphuswastaken Jan 1, 2026
431ca81
Revert "more tests"
sisyphuswastaken Jan 1, 2026
3bec96c
more tests
sisyphuswastaken Jan 1, 2026
c16f64d
Delete ..Rcheck/00check.log
sisyphuswastaken Jan 1, 2026
4119cee
Delete Makevars
sisyphuswastaken Jan 1, 2026
f792b15
converting the NSE code into helper function
sisyphuswastaken Jan 2, 2026
97b4536
including helper in [.data.table
sisyphuswastaken Jan 3, 2026
1595595
removing trailing spaces
sisyphuswastaken Jan 3, 2026
25fbd53
removed super assignment
sisyphuswastaken Jan 3, 2026
32d078d
removed trailing whitespace
sisyphuswastaken Jan 3, 2026
b2e6171
review changes
sisyphuswastaken Jan 3, 2026
a6d00fa
moved helper to data.table.R
sisyphuswastaken Jan 6, 2026
ea3ddf9
Merge remote-tracking branch 'upstream/master' into fix-7543
sisyphuswastaken Jan 6, 2026
cde91ae
removed try catch block
sisyphuswastaken Jan 7, 2026
f2f2d9f
removed whitespace
sisyphuswastaken Jan 7, 2026
734d5cc
additional tests for processSDcols
sisyphuswastaken Jan 18, 2026
62714b5
Merge branch 'master' into fix-7543
sisyphuswastaken Jan 18, 2026
157808f
Revert "Merge branch 'master' into fix-7543"
sisyphuswastaken Jan 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ If you are not fixing an open issue and you are confident, you do not need to fi

1. Unless the change is trivial (e.g. typo fix) there must be a new entry in [NEWS](https://github.com/Rdatatable/data.table/blob/master/NEWS.md). Please use the name of the user-visible function at the start to aid users quickly scanning the news item, explain the feature/bug, and thank issue/PR contributors by name. Follow the prevailing style at the top of the file; e.g. "fread with X in Y circumstance would error/segfault, [#123](issue link). Thanks to _(them)_ for reporting and _(me)_ for fixing". These are the release notes that others quickly skim and search so please use relevant helpful keywords with that in mind. If the problem was an error/warning/message, please include the error/warning/message in the news item so that folks searching for it will have a better chance of finding the news item, and to make the news item more specific. Bug fixes are under the bug fixes section heading so there is no need to include words such as "is fixed" in the first sentence because that is implicit. Please link to the issue(s) not to the PR (unless there is just a PR and no issue); if folk are interested in the detail of the fix they can get to the PR from the issue. Again: please follow the prevailing style of news items. Doing so makes it much easier and faster to review and merge.

1. Please create the PR against the `master` branch. You can do that by forking the repository, creating a new branch for your feature/bugfix in the forked project, and then using that as a base for your pull requests. After your first successful merged PR you will very likely be invited to be a [project member](https://github.com/orgs/Rdatatable/teams/project-members). This will allow you to create your next branch directly in the project which is easier and more convenient than forking, both for you and for Rdatatable's maintainers. Working on _branches_ on this (Rdatatable) project will _not_ affect the core code, so you can feel free to experiment as a project member; the core code is on the `master` branch, and only data.table [committers](https://github.com/orgs/Rdatatable/teams/committers) can push/merge code there. Remember to do `git pull upstream your_branch` (where `upstream` is the name of the remote for `Rdatatable/data.table` seen in `git remote -v`) each time you want to add something; this will keep your local branch up to date with remote, in case anyone makes commits you don't yet have locally. This will reduce the number of merge conflicts you will need to deal with. Do not use `git rebase` on a branch where other users are pushing.
1. Please create the PR against the `master` branch. You can do that by forking the repository, creating a new branch for your feature/bugfix in the forked project, and then using that as a base for your pull requests. After your first successful merged PR you will very likely be invited to be a [project member](https://github.com/orgs/Rdatatable/teams/project-members). This will allow you to create your next branch directly in the project which is easier and more convenient than forking, both for you and for Rdatatable's maintainers. Working on _branches_ on this (Rdatatable) project will _not_ affect the core code, so you can feel free to experiment as a project member; the core code is on the `master` branch, and only data.table [committers](https://github.com/orgs/Rdatatable/teams/maintainers) can push/merge code there. Remember to do `git pull upstream your_branch` (where `upstream` is the name of the remote for `Rdatatable/data.table` seen in `git remote -v`) each time you want to add something; this will keep your local branch up to date with remote, in case anyone makes commits you don't yet have locally. This will reduce the number of merge conflicts you will need to deal with. Do not use `git rebase` on a branch where other users are pushing.

1. Just one feature/bugfix per PR please. Small changes are easier to review and accept than big sweeping changes. Sometimes big sweeping changes are needed and we just have to discuss those case by case.

Expand Down
3 changes: 1 addition & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,5 @@ Authors@R: c(
person(given="@badasahog", role="ctb", comment="GitHub user"),
person("Vinit", "Thakur", role="ctb"),
person("Mukul", "Kumar", role="ctb"),
person("Ildikó", "Czeller", role="ctb"),
person("Manmita", "Das", role="ctb")
person("Ildikó", "Czeller", role="ctb")
)
36 changes: 6 additions & 30 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,15 @@

### NEW FEATURES

1. `nafill()`, `setnafill()` extended to work on logical and factor vectors (part of [#3992](https://github.com/Rdatatable/data.table/issues/3992)). Includes support for `Date`, `IDate`, `POSIXct`, etc. `nafill()` works for character vectors, but not yet `setnafill()`. Thanks @jangorecki for the request and @jangorecki and @MichaelChirico for the PRs.
1. `nafill()`, `setnafill()` extended to work on logical vectors (part of [#3992](https://github.com/Rdatatable/data.table/issues/3992)). Thanks @jangorecki for the request and @MichaelChirico for the PR.

2. `[,showProgress=]` and `options(datatable.showProgress)` now accept an integer to control the progress bar update interval in seconds, allowing finer control over progress reporting frequency; `TRUE` uses the default 3-second interval, [#6514](https://github.com/Rdatatable/data.table/issues/6514). Thanks @ethanbsmith for the report and @ben-schwen for the PR.
### Notes

3. GForce and lapply optimization detection has been refactored to use modular optimization paths and an AST (Abstract Syntax Tree) walker for improved maintainability and extensibility. The new architecture separates optimization detection into distinct, composable phases. This makes future optimization enhancements a lot easier. Thanks to @grantmcdermott, @jangorecki, @MichaelChirico, and @HughParsonage for the suggestions and @ben-schwen for the implementation.
1. {data.table} now depends on R 3.5.0 (2018).

This rewrite also introduces several new optimizations:
- Enables Map in addition to lapply optimizations (e.g., `Map(fun, .SD)` -> `list(fun(col1), fun(col2), ...)`) [#5336](https://github.com/Rdatatable/data.table/issues/5336)
- lapply optimization works without .SD (e.g., `lapply(list(col1, col2), fun)` -> `list(fun(col1), fun(col2))` [#5032](https://github.com/Rdatatable/data.table/issues/5032)
- Type conversion support in GForce expressions (e.g., `sum(as.numeric(x))` will use GForce, saving the need to coerce `x` in a setup step) [#2934](https://github.com/Rdatatable/data.table/issues/2934)
- Arithmetic operation support in GForce (e.g., `max(x) - min(x)` will use GForce on both `max(x)` and `min(x)`, saving the need to do the subtraction in a follow-up step) [#3815](https://github.com/Rdatatable/data.table/issues/3815)
2. pydatatable compatibility layer in `fread()` and `fwrite()` has been removed, [#7069](https://github.com/Rdatatable/data.table/issues/7069). Thanks @badasahog for the report and the PR.

3. Vignettes are now built using `litedown` instead of `knitr`, [#6394](https://github.com/Rdatatable/data.table/issues/6394). Thanks @jangorecki for the suggestion and @ben-schwen and @aitap for the implementation.

### BUG FIXES

Expand All @@ -34,28 +32,6 @@

3. `fread("file://...")` works for file URIs with spaces, [#7550](https://github.com/Rdatatable/data.table/issues/7550). Thanks @aitap for the report and @MichaelChirico for the PR.

4. `sum(<int64 column>)` by group is correct with missing entries and GForce activated ([#7571](https://github.com/Rdatatable/data.table/issues/7571)). Thanks to @rweberc for the report and @manmita for the fix. The issue was caused by a faulty early `break` that spilled between groups, and resulted in silently incorrect results!

5. `fread(text=)` could segfault when reading text input ending with a `\x1a` (ASCII SUB) character after a long line, [#7407](https://github.com/Rdatatable/data.table/issues/7407) which is solved by adding check for eof. Thanks @aitap for the report and @manmita for the fix.

6. `rowwiseDT()` now provides a helpful error message when a complex object that is not a list (e.g., a function) is provided as a cell value, instructing the user to wrap it in `list()`, [#7219](https://github.com/Rdatatable/data.table/issues/7219). Thanks @kylebutts for the report and @venom1204 for the fix.

7. Fixed compilation failure like "error: unknown type name 'siginfo_t'" in v1.18.0 in some strict environments, e.g., FreeBSD, where the header file declaring the POSIX function `waitid` does not transitively include the header file defining the `siginfo_t` type, [#7516](https://github.com/rdatatable/data.table/issues/7516). Thanks to @jszhao for the report and @aitap for the fix.

8. When fixing duplicate factor levels, `setattr()` no longer crashes upon encountering missing factor values, [#7595](https://github.com/Rdatatable/data.table/issues/7595). Thanks to @sindribaldur for the report and @aitap for the fix.

### Notes

1. {data.table} now depends on R 3.5.0 (2018).

2. pydatatable compatibility layer in `fread()` and `fwrite()` has been removed, [#7069](https://github.com/Rdatatable/data.table/issues/7069). Thanks @badasahog for the report and the PR.

3. Vignettes are now built using `litedown` instead of `knitr`, [#6394](https://github.com/Rdatatable/data.table/issues/6394). Thanks @jangorecki for the suggestion and @ben-schwen and @aitap for the implementation.

4. Removed use of non-API `ATTRIB`, `SET_ATTRIB`, and `findVar` [#6180](https://github.com/Rdatatable/data.table/issues/6180). Thanks @aitap for the continued assiduous work here, and @MichaelChirico for the easy fix to replace `findVar` with `R_getVar`.

5. The data.table test suite is a bit more robust to lacking UTF-8 support via a new `requires_utf8` argument to `test()` to skip tests when UTF-8 support is not available, [#7336](https://github.com/Rdatatable/data.table/issues/7336). Thanks @MichaelChirico for the suggestion and @ben-schwen for the implementation.

## data.table [v1.18.0](https://github.com/Rdatatable/data.table/milestone/37?closed=1) 23 December 2025

### BREAKING CHANGE
Expand Down
8 changes: 4 additions & 4 deletions R/as.data.table.R
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,10 @@ as.data.table.array = function(x, keep.rownames=FALSE, key=NULL, sorted=TRUE, va
stopf("as.data.table.array method should only be called for arrays with 3+ dimensions; use the matrix method for 2-dimensional arrays")
if (!is.character(value.name) || length(value.name)!=1L || is.na(value.name) || !nzchar(value.name))
stopf("Argument 'value.name' must be scalar character, non-NA and at least one character")
if (!isTRUEorFALSE(sorted))
stopf("'%s' must be TRUE or FALSE", "sorted")
if (!isTRUEorFALSE(na.rm))
stopf("'%s' must be TRUE or FALSE", "na.rm")
if (!is.logical(sorted) || length(sorted)!=1L || is.na(sorted))
stopf("Argument 'sorted' must be scalar logical and non-NA")
if (!is.logical(na.rm) || length(na.rm)!=1L || is.na(na.rm))
stopf("Argument 'na.rm' must be scalar logical and non-NA")
if (!missing(sorted) && !is.null(key))
stopf("Please provide either 'key' or 'sorted', but not both.")

Expand Down
Loading
Loading