Releases: polyfy/polylith
Version 0.2.22-SNAPSHOT
stable-master [skip ci] Added Stable Polylith tag
Version 0.2.21
This release contains a bug fix, support for Clojure 1.12, and some documentation updates.
Issue | Description |
---|---|
504 | Bug fix. Caused an exception if there were validation errors. |
Other changes |
---|
Rename next-release.adoc to next-release.md (changed from AsciiDoc to Markdown) |
Support Clojure 1.12 syntax, by bumping Edamame to 1.4.26. |
Doc updates |
---|
New Visualize the repo page, that shows how the polylith repo has evolved over time using git-of-theseus |
The manual release process on how to create snapshot and stable releases. |
A talk by Vedang Manerikar from the IN/Clojure 2024 conference, added to the list of videos. |
Make sure the integrant-system overview image is correct + move its example repository. |
Thanks Mitchell Horning and Kevin Downey for helping out with issue 504!
Version 0.2.20
This release has largely been about cleaning up issues and preparing for the work of supporting ClojureScript. After four months of work, I abandoned the attempt to support multiple workspaces, and chose to roll back these changes. Sometimes it takes time to understand the full extent of a change, but today I'm very happy that I made this decision, and I'm convinced that it will be for the best in both the short and long term. In addition to this insight, some good has also come out of this in the form of some code simplifications that have been implemented.
Issues and PRs
- When creating a workspace, honor user git config for default main branch name, issue 420
- Switch workspace via shortcuts, issue 443
- Support snippets of test configuration to be merged into settings, issue 457
- Show an error if a brick depends on another brick in its deps.edn file, issue 458
- Make sure
:keep-lib-versions
works when updating libs for components (bug fix), issue 465 - Cannot run poly tool in folder containing deps.edn (but no workspace.edn), issue 477
- Support generating images with light or transparent background, issue 484
- Create an example project showing how to use Polylith with Integrant, PR 482
Other changes
- Allow the use of
+
(to show all profiles) in theinfo
command when reading the workspace from file. - New poly-rcf example workspace that shows how to run Hyperfiddle rcf tests with the
poly
tool. - If
:hide-lib-size
is given to thelibs
command, values in theKB
column appear as-
. Used for testing purposes.
Doc updates
- A note informing that old
SNAPSHOT
releases are removed on an ongoing basis. - Added the video How the polylith repo has evolved over time to the Developing poly and Doc pages. Can be accessed with
poly doc more:videos:how-the-polylith-repo-has-evolved-over-time
. - New State page, that links to examples that use Component and Integrant.
- Updated the Libraries section and better explained the issues with building multiple libraries from a Polylith workspace.
- New sponsors: Taehee Kim (김태희), Sanghyun Kim, and PremiScale
- Translated and reworked version of the
0.2.19
poly tool documentation in Japanese, by Shinsei Taro (しんせいたろう). Can be accessed withpoly doc more:in-japanese
- Added Integrant system to the list of example systems.
- Updated the overview diagram of World Singles Networks.
- Removed Funnel as example production system.
Version 0.2.19
The main focus in this release has been to clean up the workspace structure by moving keys to where they belong (issue 315). This clean up of the workspace structure was introduced to simplify future maintenance of the tool. It unfortunately broke the Test Runner contract (tests has been added, so this hopefully will not happen again). The good part is that the improved inner workspace structure will make it easier to implement test runners in the future. We decided to skip the idea of storing project and brick configuration in separate files because it made it harder to edit it and get an overview (they can still be found in :projects
and :bricks
in workspace.edn).
Important: If you use a test runner other than the built-in one, make sure to use at least 0.8.4 of the Kaocha test runner, and 0.4.0 of the External test runner.
Issues and PRs
- Clean up the workspace structure (changes are listed here), issue 315.
- Update Edamame dependency to 1.4.25, to make it work with Clojure 1.12 Alpha 7.
- Link to affected 3rd party test runners in docstring, PR 426.
- Restore global test configuration, PR 427.
Other changes
- Reintroduced the global
:test
key in:settings
in the workspace structure (taken from workspace.edn), see versions (bug fix). - Make sure we also update libraries for the development project when we execute
poly libs :update
(bug fix). - Changed lib name prefix from "poly" to "polylith" in the polylith workspace itself, to minimise the risk of name clashes for the users of the clj-poly library.
- Added
check
andtest
functions to the clj-poly library, documented here. - Custom data can be stored in the reserved
:custom
key at the root of workspace.edn and under each project and brick, see custom configuration. - The test-runners example project was added. It uses the Kaocha and External test runners, and is executed before we make a release (from create-example) to reduce the risk that we break the Test Runner API in the future.
- Removed the migrate command, that can migrate a workspace from the old format where each brick didn’t store its own deps.edn file (created by 0.1.0-alpha9 or earlier). Use 0.2.18 if you still need to migrate old workspaces.
- Print a deprecation message if the shorter form of "create component/project/workspace" is used, e.g.
create c name:mycomp
. - Print a deprecation message if
::
is used (that looks up the workspace root). This feature will be removed in the future, and the reason is that it’s no longer needed since we introduced the shell command. - Make sure we can create a workspace, even if it exists a non-polylith deps.edn file at the root.
Doc updates
- Fixed three broken images on the Testing page.
- Show snapshot number, e.g.
0.2.19-SNAPSHOT #7
for the badge at the top of the start page for snapshot releases. - Added a warning that you should use a more unique prefix (lib name) for your bricks in project
deps.edn
files, if the code is exposed outside the workspace, e.g. as a library. Thanks Imre Kószó for pointing this out! - Added a tip on how to refresh your workspace from a shell.
- Added a note that old workspaces can be read by the tool (both from exported files and from disk).
- Added Leveraging Polylith to improve consistency, reduce complexity and increase changeability to the list of blog posts. These can also be accessed by the doc command.
- Added Demo Rama Electric to the list of example systems.
- Converted this documentation from next-release.txt to AsciiDoc.
Version 0.2.18
The focus of this release is to improve internal quality by using clojure.edn and Edamame when reading files. Rewriting the dependency calculations and moving the documentation back to where the code lives, has been done to better handle future maintenance and support for cljs and code sharing between workspaces.
The documentation has not only been moved, but new pages have been added: Artifacts, Doc, Tap, Test Runners, Validations, Source code, Polylith CI setup, Polyx, and Versions. Around 90% of the documentation has been reviewed by @lread, which has taken hundreds of hours, where Lee has done most of the work. This effort is invaluable and will facilitate the maintenance work, as changes to code and documentation can from now on be made coherently. Worth mentioning is that Cljdoc is an excellent documentation platform and that Asciidoc is a very good alternative to Markdown, which is also supported by GitHub.
Since Cursive 1.13.0, it's possible to use the :local/root
syntax together with Cursive for the development
project, and all examples now use the :local/root
syntax! Read more about it here and under "Cursive users" in Testing. I want to give a special thanks to Colin Fleming for fixing this in Cursive and all the hard work made by Imre Kószó in issue 2554 and all the good support from Furkan.
Another change is how we build and release the poly tool and its documentation, which is described here. We only build clj-poly for use as a library, which includes everything that was included in clj-api. Note that the poly tool documentation is version controlled and if you work from the master
branch, you should use the latest SNAPSHOT version (e.g. 0.2.19-SNAPSHOT
when that is released).
The content of all configuration files is stored in the configs key in the workspace structure. The internal error handling has been improved and centralised into the config-reader
component. We now use clojure.edn when reading edn files and if a file can't be parsed, a detailed error message that includes row and column is shown.
The dependency calculations are several times quicker which make commands run noticeably faster for big workspaces.
Note that the alpha
has been dropped from 0.2.18
and that's because we depend on tools.deps instead of tools.deps.alpha.
Issues and PRs:
-
Support for more than one interface. Always accept
interface
andifc
+ what's specified in:interface-ns
, issue #187. -
Addition of the new
polyx
tool that supports the creation of images from the command's output. It includes all functionality inpoly
plus the overview command that generates the info/deb/libs image, issue #205. -
Inclusion of bases in the circular dependency check (error 104), issue #249.
-
Checks for unreadable namespace (error 111), issue #259.
-
Improved error messages for workspace.edn and deps.edn config files, issue #264.
-
Option to display inverted deps grid, by swapping the x and y axes, issue #271.
-
Checking of test dependencies with the check command (solved by issue 293 and 274), issue #272.
-
Support for exclusion of bricks to test so that we support both
:include
and:exclude
for projects in workspace.edn, issue #274. -
Improved warning 205 by also showing non-top namespace files. Error 106 and 108 are not displayed in some edge cases, issue #277.
-
Trigger error 111 if a source file doesn't have a namespace, issue #279.
-
Improved reporting of the check/info/test commands, which now report unnecessary components (warning 207). If a component is not referred to but is still needed, it can be marked as
:necessary
by that project, seepoly help check
(warning 207) for details, issue #282. -
Availability of
switch-ws
in the shell, outside a workspace, issue #286. -
The ability to show all available options in a shell, issue #289.
-
Inability to
:commit
when creating a workspace within an existing repo, issue #290. -
Correct handling of bases that depend on other bases, issue #293.
-
Support for showing outdated libraries by passing in
:outdated
to the libs command, issue #294. -
Updates of outdated examples/docs (solved by issue #312), issue #304.
-
Recognition of
test-resources
as a resources directory, issue #305. -
Improved performance of the poly commands by optimising the dependency calculations, issue #309.
-
Build docs/example code should not use build-clj, issue #312.
-
NPE when importing Java sub namespace, issue #313.
-
Don't validate
data_readers.clj
files, issue #316. -
Updates of all libraries to the latest version with
poly libs :update
, issue #376. -
New use of tools.deps instead of tools.deps.alpha, issue #268.
-
Requirement for clojure.tools.deps correctly in build.clj, PR #275.
-
Tweaks to bb doc task that offers cljdoc previews, PR #319.
-
Fix of NPE when taking the size of a directory, PR #323.
-
Fix of filename/namespace mismatch in profile.adoc, PR #324.
-
Addition of clj-kondo config exports, PR #332.
Other improvements:
- Exclude license files when building an uberjar.
- We no longer include tools.deps as a library when creating projects.
- Removed the
:all
option for the deps and libs commands, so that we no longer include bricks that don't have a lib dep. - Also include missing bases in validation error 107.
- A shell can be started using
poly :tap
which is equivalent topoly shell :tap
. This will start a shell and open up a portal window at the same time. Other valid first parameters::all
,:fake-poly
,:github
,:local
,:ws-file
, and:ws-dir
. - The portal window now only includes the workspace structure, which makes it an alternative way to browse the workspace.
- In the deps command, we now exclude empty columns (bricks that don't use any library).
- If we use
switch-ws
in a shell and execute a command and give the color-mode, then it will be used by that command. - The autocomplete now works when starting a shell outside a workspace, which can be useful when creating a workspace, or if we want to switch to another workspace.
- The test that executed
libs :outdated
has been removed, so that it doesn't fail intermittently. Earlier, the tests for a PR could suddenly start failing if a newer version of a used library was released. - If we switch to a file using e.g.
switch-ws file:ws.edn
, the:no-changes
will now work properly. - Removed support for running
poly
as a Clojure Tool. - Show size as dash (- instead of 0) in the libs command, if a library hasn't been downloaded yet. This stopped working in 0.2.17-alpha.
- Handle spacing between bricks correctly in the libs command when passing in
skip:dev
.
Thanks @seancorfield for helping out with issue #312 and for PR #268 and #269.
Thanks @lread for PR #319, #332, #327, and more!
Thanks @john-shaffer for PR #323.
Thanks Borkdude for creating Edamame and the support to get started with it.
Worth mentioning is that the clojure2d worked really well for imag...
Version 0.2.17-alpha
Version 0.2.16-alpha
This release of the poly tool includes:
- External Test runner support, PR #263, PR #260, issue #252, issue #253
- Show warning 206 if a namespace can't be parsed, issue #258
- Ignore empty or commented out source files, issue #251
- Request GC after each project test suite runs, PR #257
- Do not use context class loader, PR #256
- Also show bases in error message for circular dependencies, #249
- Use -M instead of -A in Clojure cli (documentation update), PR #248
- poly check treats :as-alias namespace as loaded, issue #247
- Make it easier to find guides of how to get started and such, issue #195
Thanks @furkan3ayraktar, @seancorfield and @imrekoszo for the work on supporting External Test runners!
Thanks @seancorfield for the PR's #256, #257
Thanks @ieugen for updating the documentation, PR #248
Thanks @PEZ for pointing out that the documentation could be improved, PR #195
Version 0.2.15-alpha
This release of the poly tool includes:
- Pluggable test runner, PR 196
- Use source paths from deps.edn files, issue 206
- Test runner fails on cljc test files, issue 208
- Handle string keys in the ws command correctly, issue 209
- Add name of tar-file to sha-file, PR 210
- Translate interface-ns to path when creating component, PR 213
- Version typo in 'create workspace' command, issue 215
- Bump fs dependency to fix CVEs, PR 216
- Poly tool should check deps.edn for src and test path, issue 217
- IllegalArgumentException when require flag is present in the ns macro, issue 219
- Documentation improvement, issue 225
- Support XDG systems properly for config.edn, PR 228
- Poly test should return non-zero exit code when per-project test-setup has failed, issue 229
- Support aliases in paths, issue 230
- Test setup failure no longer aborts test run, issue 234
- Projects tests are not run with adf957c, issue 235
Thanks to @imrekoszo we now support Kaocha! - PR 196
Another improvement I want to mention is implemented by @seancorfield, and adopts XDG config conventions. For XDG users, feel free to move ~ /.polylith/config.edn
to XDG_CONFIG_HOME, e.g. ~/.config/polylith/config.edn
- PR 228
Another improvement is that the source and test code is read from the directories specified in each brick's and project's deps.edn
file (paths
and :aliases > :test > :extra-paths
). Before, they were hard coded to src
and test
. Therefore we can also specify more than one src and/or test directory, and even use sub directories (e.g. src/clj
+ src/cljc
) - issue 206.
I also want to thank:
- @TimoKramer for #210
- @dpetran for #213
Version 0.2.14-alpha
This release of the poly tool includes:
- Allow leaving out
:extra-paths
in aliases indeps.edn
, issue 144 - Calculate library size even when using short shas, issue 145
- Handle
:local/root
correctly in profiles, issue 146 - Restore description/url to generated pom.xml, PR 148
- Allow entities to be symbols in
clojure -T
commands, issue 154 - Remove the link to the (closed down) forum when creating workspaces, issue 157
- Don't commit files when creating a workspace (if not passing in
:commit
), issue 160 - Don't run tests if test setup fails, issue 161
- Don't add
tools.deps.alpha
as a dependency when creating workspaces and projects, issue 164 - Update djblue/portal to 0.18.1, issue 166
- Use .m2 root if configured in
~/.polylith/config.edn
, issue 171 - Make sure git deps with implicit url works, issue 174
- Make sure the test command returns 1 if the workspace contains errors, issue 177
- Set correct hash-sum denotation, PR 178
- Handle
./components/foo
(local) paths correctly in./deps.edn
, issue 182 - Calculate file size correctly even in some rare cases, PR 183
- Remove warning 204 (not valid any more), issue 184
- Typo in message, PR 186
- Handle hidden files correctly, PR 188
- Support running all tests for selected projects, issue 189
One important change in this release is issue 160. Now we don't initiate the workspace as a git repository and adds commits to it automatically any more. To do that we need to pass in :commit
to the create workspace
command.
Another change is issue 189, which makes it possible to run all tests for one or many projects, e.g. poly test :all project:p1:p2
. Before, we would run all tests, because :all
was passed in, but now project:p1:p2...
will work in a similar way as brick:b1:b2...
which makes more sense. Thanks Miikka Koskinen for noticing this.
A PDF for the poly tool doc is included (see below). The export functionality in gitbook doesn't do a perfect job always when it comes to page brakes, but it should be okay I think.
Thanks Sean Corfield for PR 148
Thanks Timo Kramer for PR 178
Thanks Jeroen van Dijk for the PRs 183, 186 and 188.
Version 0.2.13-alpha
This release of the poly
tool includes:
- Shell command with history and auto-complete, issue #106
- Show Indirect changes for projects, Issue #124
- Move the poly documentation to gitbook, issue #128
- Ignore top level data readers, issue #129
- Polylith should manage its own brew tap, issue #131
- Use tools.build, issue #134
- Restrict naming of bricks, issue #135
- Use deps and paths in development when running tests, issue #137
- Symbolic links to non-existing source files throws exception, issue #138
A big thank goes to Clojurists Together that has sponsored this release!
A special thank goes to @seancorfield for the great work with issue #134!