CrossHair unicode and more

CrossHair and Such

13 Oct 2021

Plenty of things to talk about in this update. I’ll get right to it.

Full Unicode Support

In version 0.0.18, CrossHair can generate counterexample strings in full unicode. Until now, unicode support was probably the most glaring omission in CrossHair’s capability list.

It also has expanded symbolic support for regexes and various string methods. (full release notes)

Deal Support

CrossHair can now check contracts written in deal! Check out the details here.

One neat thing about deal in particular: it encourages you to tag side-effects of your functions. CrossHair uses some of these tags to avoid unintended side effects while checking contracts.

EuroPython Talk - Released!

All of the EuroPython recordings have been released!

I shared a talk about contracts, and you can skip ahead to my CrossHair section if you like.

One of the neat things about this section of the talk is that I get into some of the design consequences of developing with contracts specifically (as opposed to related strategies like fuzzing and property-based testing, which can also be CrossHair-facilitated).


CrossHair has a few open issues marked for Hacktoberfest.

That said, one of the biggest ways to help CrossHair is to:

  1. Try using CrossHair while out while you work on other Hacktoberfest projects!
  2. Find CrossHair bugs. File issues.
  3. File a pull request against CrossHair with failing unit test(s) (with @pytest.mark.skip).
  4. Watch me joyously merge them and get your PR count even higher.

The Feels

Watching Python take the leader position this month in the TIOBE index, I am filled with optimism. Python, the language, has some properties that are particularly suited to the strengths of SMT solvers. (arbitrary size integers, for one)

We just need to wield that strength.

Let’s get to work.