Skip to content

Releases: polyfy/polylith

Version 0.2.22-SNAPSHOT

29 Sep 10:51
e249197
Compare
Choose a tag to compare
Pre-release
stable-master

[skip ci] Added Stable Polylith tag

Version 0.2.21

10 Aug 20:07
44f5ecb
Compare
Choose a tag to compare

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

15 Jul 19:06
73da9a7
Compare
Choose a tag to compare

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 the info 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 the libs command, values in the KB column appear as -. Used for testing purposes.

Doc updates

Thanks Mark Sto for PR 482
Thanks Lee Read for PR 490

Version 0.2.19

16 Feb 04:56
e488b44
Compare
Choose a tag to compare

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 and test 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

Version 0.2.18

20 Dec 07:09
e8feb79
Compare
Choose a tag to compare

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 and ifc + 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 in poly 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, see poly 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.

  • Use of cljdoc for the poly tool documentation, issue #318.

  • 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 to poly 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 @sundbry for PR #275

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...

Read more

Version 0.2.17-alpha

09 Dec 12:25
a1581cc
Compare
Choose a tag to compare

This release of the poly tool includes PR #266, which solves the bug introduced in the latest release and reported in issue #265.

Thanks, @svdo, for pointing out this issue.

Version 0.2.16-alpha

08 Dec 21:32
Compare
Choose a tag to compare

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

10 Aug 05:49
22fe6fe
Compare
Choose a tag to compare

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:

Version 0.2.14-alpha

30 Mar 16:05
Compare
Choose a tag to compare

This release of the poly tool includes:

  • Allow leaving out :extra-paths in aliases in deps.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

12 Oct 19:58
Compare
Choose a tag to compare

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!