Skip to content

Ease contribution with Devcontainer - #1041

Merged
mk-mxp merged 3 commits into
exercism:mainfrom
mk-mxp:add-devcontainer
Aug 4, 2026
Merged

Ease contribution with Devcontainer#1041
mk-mxp merged 3 commits into
exercism:mainfrom
mk-mxp:add-devcontainer

Conversation

@mk-mxp

@mk-mxp mk-mxp commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Provide a Devcontainer setup for contributors. This provides all required PHP modules / extensions.

mk-mxp added 2 commits August 2, 2026 14:40
PHPUnit cannot be used directly, the extension does not work for us.

PHPCS extension requires advanced setup to be used in a container,
so don't provide it.
@mk-mxp mk-mxp self-assigned this Aug 2, 2026
@mk-mxp mk-mxp added x:action/improve Improve existing functionality/content x:knowledge/elementary Little Exercism knowledge required x:type/coding Write code that is not student-facing content (e.g. test-runners, generators, but not exercises) x:size/small Small amount of work x:rep/small Small amount of reputation labels Aug 2, 2026
@mk-mxp
mk-mxp requested a review from homersimpsons August 2, 2026 13:37
Comment thread .devcontainer/Dockerfile
Comment on lines +7 to +13
# ds is pinned to v1, since v2 (the only version building against PHP 8.4 via
# PECL/docker-php-ext-install) dropped Vector/Deque/Stack/Queue/PriorityQueue.
RUN curl -L -o install-php-extensions \
https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions \
&& chmod +x install-php-extensions \
&& ./install-php-extensions gmp ds-^1@stable intl \
&& rm install-php-extensions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we instead upgrade the test runner and everything to V2 ? Or would you prefer doing this in the php 8.5 upgrade ?

Note that even if they were removed, new alternatives were provided https://github.com/php-ds/ext-ds/releases/tag/v2.0.0

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ds is not a requirement the track has or I introduced. It was "requested" by neenjaw (the maintainer before I came in) as a useful computer-sciency data type extension used in community solutions.

I did not upgrade it because of the breaking interface changes. I'd rather "discuss" (if there is anyone discussing that with me anyways) to drop it completely with the PHP 8.5 upgrade - it's not there for fluency in PHP, but for academic knowledge and production grade programming.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See forum for follow-up.

Comment thread README.md
- PHP V8.4+ CLI, with the following extensions:
- `ds` (V1.x)
- `intl`
- Default modules: `Core`, `ctype`, `date`, `dom`, `fileinfo`, `filter`, `hash`, `iconv`, `json`, `libxml`, `mbstring`, `pcre`, `random`, `Reflection`, `SimpleXML`, `sodium`, `SPL`, `standard`, `tokenizer`, `xml`, `xmlreader`, `xmlwriter`, `zlib`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we just mention ext-* requirements? It does not look relevant to mention "Core", "ctype", "date"...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is the same list we added to the test-runner. It is the same list, that shall be added to the PHP track docs. A beginner who wants to start learning can use php -m to check the installed modules using these names. With composers ext-* notation they have to translate the names to composers style, have composer installed at all and filter away many more names from the composer output than from php -m.

To us, ctype et al. do not seem relevant. In PHP documentation, the functions and classes are organized by them. So I can use the ctype functions, study them, try them out in my solutions etc. It's a common question: What functions could I use at all? What's my "search space"?

@mk-mxp
mk-mxp merged commit f2fefce into exercism:main Aug 4, 2026
13 checks passed
@mk-mxp
mk-mxp deleted the add-devcontainer branch August 4, 2026 06:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

x:action/improve Improve existing functionality/content x:knowledge/elementary Little Exercism knowledge required x:rep/small Small amount of reputation x:size/small Small amount of work x:type/coding Write code that is not student-facing content (e.g. test-runners, generators, but not exercises)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants