chore: update versions for 0.4.0
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fbcbe70..9613834 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,7 +22,7 @@
   set(CMAKE_C_STANDARD 99)
 endif()
 
-set(NANOARROW_VERSION "0.4.0-SNAPSHOT")
+set(NANOARROW_VERSION "0.4.0")
 string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" NANOARROW_BASE_VERSION
              "${NANOARROW_VERSION}")
 project(nanoarrow VERSION "${NANOARROW_BASE_VERSION}")
diff --git a/python/src/nanoarrow/_static_version.py b/python/src/nanoarrow/_static_version.py
index 33ecbc5..d57ca2c 100644
--- a/python/src/nanoarrow/_static_version.py
+++ b/python/src/nanoarrow/_static_version.py
@@ -18,7 +18,7 @@
 # This file is part of 'miniver': https://github.com/jbweston/miniver
 
 # Replaced by version-bumping scripts at release time
-version = "0.4.0.dev0"
+version = "0.4.0"
 
 # These values are only set if the distribution was created with 'git archive'
 refnames = "$Format:%D$"
diff --git a/r/DESCRIPTION b/r/DESCRIPTION
index d8bd084..32f911c 100644
--- a/r/DESCRIPTION
+++ b/r/DESCRIPTION
@@ -1,6 +1,6 @@
 Package: nanoarrow
 Title: Interface to the 'nanoarrow' 'C' Library
-Version: 0.3.0.9000
+Version: 0.4.0
 Authors@R: c(
     person(given = "Dewey",
            family = "Dunnington",