The default shelve pickle protocol should have been 3.
diff --git a/Misc/NEWS b/Misc/NEWS
index 5426046..68cea16 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -157,6 +157,8 @@
 
 - Issue #1581476: Always use the Tcl global namespace when calling into Tcl.
 
+- The shelve module now defaults to pickle protocol 3.
+
 - Fix a bug in the trace module where a bytes object from co_lnotab had its
   items being passed through ord().