An Architect's View

Clojure, Software Design, Frameworks and more...

Release! Release! Release!

| Comments

Lots of Releases

Over the last week or so I’ve released minor updates to several of the projects I maintain, so I thought it would be nice to have a summary blog post rather than a scattering of minor announcements.

clj-time 0.15.2

Add type hints, fix a bug in overlaps?, improve tests and documentation.

See the change log for more details.

jkk/honeysql 0.9.5

Support JDK11 for dev/test, support Turkish language users, enhance format-predicate to match format (parameterizer).

See the change log for more details.

seancorfield/clj-new 0.7.7

Pin Clojure (and test.check) version in generated projects instead of using "RELEASE".

See the change log for more details.

seancorfield/depstar 0.3.1

Add -m / --main option to override Main-Class in generated manifest.

See the change log for more details.

seancorfield/next.jdbc 1.0.5

plan’s “mapified” ResultSet is now a full IPersistentMap implementation which adds support for cons, count, dissoc, empty, etc. Continued improvements to documentation.

See the change log for more details.

Next.JDBC to 1.0.0 and Beyond!

| Comments

next.jdbc 1.0.0 and 1.0.1

First off, seancorfield/next.jdbc 1.0.0 was released on June 13th, 2019 (and I announced it on ClojureVerse but did not blog about it), and yesterday I released seancorfield/next.jdbc 1.0.1 which is mostly documentation improvements.

Someone recently commented that this blog had the Release Candidate announcement on June 4th and was surprised I didn’t “make a big deal” about the “gold” release. The 1.0.0 release is a big deal and this blog post is about that – what it’s taken to get here and what’s to come.

Next.JDBC Release Candidate 1

| Comments

seancorfield/next.jdbc 1.0.0-rc1

next.jdbc – the “next generation” of clojure.java.jdbc – is a modern Clojure wrapper for JDBC. The first Release Candidate is now available to test – containing only accretive and fixative changes from Beta 1. The API should be considered stable enough for production usage.

https://cljdoc.org/d/seancorfield/next.jdbc/1.0.0-rc1/doc/readme

The focus of this release is providing more flexibility in result set builders, so that it is easier to implement your own naming strategies, via new builders that accept :label-fn and :qualifier-fn options. These mirror the :column-fn and :table-fn options used in next.jdbc.sql – which are updated versions of clojure.java.jdbc’s :entities option. These new builder options are updated versions of clojure.java.jdbc’s :identifiers option.

Changes since Beta 1

  • Fix #24 by adding return type hints to next.jdbc functions.
  • Fix #22 by adding next.jdbc.optional with six map builders that omit NULL columns from the row hash maps.
  • Documentation improvements (#27, #28, and #29), including changing “connectable” to “transactable” for the transact function and the with-transaction macro (for consistency with the name of the underlying protocol).
  • Fix #30 by adding modified variants of column name functions and builders. The lower variants have been rewritten in terms of these new modified variants. This adds :label-fn and :qualifier-fn options that mirror :column-fn and :table-fn for row builders.

Please take it for a test drive and let me know if you run into any problems via GitHub issues or in the #sql channel on the Clojurians Slack or the #sql stream on the Clojurians Zulip.

Next.JDBC Beta 1

| Comments

seancorfield/next.jdbc 1.0.0-beta1

next.jdbc – the “next generation” of clojure.java.jdbc – is a modern Clojure wrapper for JDBC. Beta 1 is now available to test – only accretive and fixative changes will be made from this point on, so the API should be considered stable enough for production usage.

https://cljdoc.org/d/seancorfield/next.jdbc/1.0.0-beta1/doc/readme

The group and artifact ID will remain seancorfield/next.jdbc, the namespace structure will remain next.jdbc.*. With auto-generated documentation hosted on cljdoc.org and Continuous Integration testing hosted on circleci.com, I have decided to continue work on next.jdbc outside Clojure Contrib, rather than merge it into clojure.java.jdbc as new namespaces there. I have updated the Contributing page on GitHub to reflect that Pull Requests can now be submitted.

Changes since Alpha 13

  • Set up CircleCI testing (just local DBs for now).
  • Address #21 by adding next.jdbc.specs and documenting basic usage.
  • Fix #19 by caching loaded database driver classes.
  • Address #16 by renaming reducible! to plan (this is a BREAKING CHANGE! from Alpha 13 – the naming of this function was the blocker for moving from Alpha to Beta).
  • Address #3 by deciding to maintain this library outside Clojure Contrib.

Please take it for a test drive and let me know if you run into any problems via GitHub issues or in the #sql channel on the Clojurians Slack or the #sql stream on the Clojurians Zulip.

Next.JDBC

| Comments

seancorfield/next.jdbc 1.0.0-alpha8

I’ve talked about this in a few groups – it’s been a long time coming. This is the “next generation” of clojure.java.jdbc – a modern wrapper for JDBC, that focuses on reduce/transducers, qualified-keywords, and datafy/nav support (so, yes, it requires Clojure 1.10).

https://cljdoc.org/d/seancorfield/next.jdbc/1.0.0-alpha8/doc/readme

The next generation of clojure.java.jdbc: a new low-level Clojure wrapper for JDBC-based access to databases. It’s intended to be both faster and simpler than clojure.java.jdbc and it’s where I intend to focus my future energy, although I have not yet decided whether it will ultimately be a new set of namespaces in the Contrib lib or a separate, standalone OSS library!

At this point, I’m looking for feedback on the API and the approach (as well as bugs, performance issues, etc). Please take it for a spin and let me know what you think via GitHub issues or in the #sql channel on the Clojurians Slack or the #sql stream on the Clojurians Zulip.

The group/artifact ID will change at some point: and the actual namespaces will too, but I will try to make that as painless as possible when I take this out of the alpha phase.

Atom, Chlorine, and Windows

| Comments

About a month ago, I was praising Chlorine, the new Clojure package for Atom and I’ve been using it, day-in, day-out, for all my Clojure development. On a Mac, that’s straightforward because I start a Socket REPL on the Mac and I run Atom on the Mac so when I connect via Chlorine and issue the Chlorine: Load File command (via Ctrl-, f in my keymap), it sends (load-file "/path/to/file.clj") to the REPL, for the file being edited, and that is evaluated and loads the source from disk and compiles it. On Windows…

Clojure 1.10's Datafy and Nav

| Comments

One of the more mysterious new features in Clojure 1.10 seems to be the pairing of datafy and nav (and their underlying protocols, Datafiable and Navigable). Interest in these new functions has been piqued after Stuart Halloway showed off REBL at Clojure/conj (video). Stu presented this functionality as “generalized laziness”: datafy produces a “data representation” of things and nav lets you (lazily) navigate around that data.