Skip to content

Version 0.2.18

Compare
Choose a tag to compare
@furkan3ayraktar furkan3ayraktar released this 20 Dec 07:09
e8feb79

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

We hope this release was worth the wait and we wish all our users a Merry Christmas and a Happy New Year!