Simplify the version bump process. ### Description

Simplify the version bump process.

- Use substitution hook in docs to update CDN URL.
  - In `dev` or `prerelease` versions, it will point to `dev` url
  - In `stable` versions, it will point it `vX.Y.Z` url
- Introduce a version bump script `tools/bump_version.py`.


~- Use `bump2version` to bump Python versions (continuing from #2460)~
~- Use `npm version` to bump JS versions~
~- Update `run_docker` script to use latest deployed pre-built docker image when `--pre-built` option is specified.~

### Checklists

- [x] Add new / update outdated documentation

From b250b95b9740015179b72b0af9271a1c6ac5fe6b Mon Sep 17 00:00:00 2001
From: Hood Chatham <roberthoodchatham@gmail.com>
Date: Wed, 26 Jan 2022 18:59:47 -0800
Subject: [PATCH 07/14] BUG: Fix the return type of random_float_fill

The `random_float_fill` function type is declared with return type `double` but
I think this is a typo. The actual implementation of `random_float_fill` is
`random_standard_uniform_fill_f` which has return type `void`:

void random_standard_uniform_fill_f(bitgen_t *bitgen_state, npy_intp cnt, float *out)

Also, `random_double_fill` is declared with return type `void`. This fixes the
return type of `random_float_fill` to match.
---
 numpy/random/_common.pxd | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/numpy/random/_common.pxd b/numpy/random/_common.pxd
index 9f2e8c3ca..3625634cd 100644
--- a/numpy/random/_common.pxd
+++ b/numpy/random/_common.pxd
@@ -45,7 +45,7 @@
 ctypedef double (*random_double_2)(void *state, double a, double b) nogil
 ctypedef double (*random_double_3)(void *state, double a, double b, double c) nogil
 
-ctypedef double (*random_float_fill)(bitgen_t *state, np.npy_intp count, float* out) nogil
+ctypedef void (*random_float_fill)(bitgen_t *state, np.npy_intp count, float* out) nogil
 ctypedef float (*random_float_0)(bitgen_t *state) nogil
 ctypedef float (*random_float_1)(bitgen_t *state, float a) nogil
 
-- 
2.25.1


From b250b95b9740015179b72b0af9271a1c6ac5fe6b Mon Sep 17 00:00:00 2001
From: Hood Chatham <roberthoodchatham@gmail.com>
Date: Wed, 26 Jan 2022 18:59:47 -0800
Subject: [PATCH 07/14] BUG: Fix the return type of random_float_fill

The `random_float_fill` function type is declared with return type `double` but
I think this is a typo. The actual implementation of `random_float_fill` is
`random_standard_uniform_fill_f` which has return type `void`:

void random_standard_uniform_fill_f(bitgen_t *bitgen_state, npy_intp cnt, float *out)

Also, `random_double_fill` is declared with return type `void`. This fixes the
return type of `random_float_fill` to match.
---
 numpy/random/_common.pxd | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/numpy/random/_common.pxd b/numpy/random/_common.pxd
index 9f2e8c3ca..3625634cd 100644
--- a/numpy/random/_common.pxd
+++ b/numpy/random/_common.pxd
@@ -45,7 +45,7 @@
 ctypedef double (*random_double_2)(void *state, double a, double b) nogil
 ctypedef double (*random_double_3)(void *state, double a, double b, double c) nogil
 
-ctypedef double (*random_float_fill)(bitgen_t *state, np.npy_intp count, float* out) nogil
+ctypedef void (*random_float_fill)(bitgen_t *state, np.npy_intp count, float* out) nogil
 ctypedef float (*random_float_0)(bitgen_t *state) nogil
 ctypedef float (*random_float_1)(bitgen_t *state, float a) nogil
 
-- 
2.25.1

