xref: /petsc/doc/install/download.md (revision 6c006fdf708e254dd4f47e201e35f5a938d9ab7b)
1(doc_download)=
2
3# Download
4
5## Recommended: Obtain Release Version With Git
6
7Use `release` branch from PETSc git repository - it provides the latest release with additional crucial bug fixes.
8
9```console
10$ git clone -b release https://gitlab.com/petsc/petsc.git petsc
11$ git pull # obtain new release fixes (since a prior clone or pull)
12```
13
14To anchor to a release version (without intermediate fixes), use:
15
16```console
17$ git checkout vMAJOR.MINOR.PATCH
18```
19
20We recommend users join the official PETSc {ref}`mailing lists <doc_mail>` to submit
21any questions they may have directly to the development team, to be notified of new
22releases, or to simply keep up to date with the current state of the
23library.
24
25## Alternative: Obtain Release Version with Tarball
26
27Tarball which contains only the source. Documentation available [online](https://petsc.org/release).
28
29- [petsc-3.24.4.tar.gz](https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-3.24.4.tar.gz)
30
31Tarball which includes all documentation, recommended for offline use.
32
33- [petsc-with-docs-3.24.4.tar.gz](https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-with-docs-3.24.4.tar.gz)
34
35Tarball to enable a separate installation of petsc4py.
36
37- [petsc4py-3.24.4.tar.gz](https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc4py-3.24.4.tar.gz)
38
39To extract the sources use:
40
41```console
42$ tar xf petsc-<version number>.tar.gz
43```
44
45Current and older release tarballs are available at:
46
47- [Primary server](https://web.cels.anl.gov/projects/petsc/download/release-snapshots/)
48
49:::{Note}
50Older release tarballs of PETSc should only be used for
51applications that have not been updated to the latest release. We urge you, whenever
52possible, to upgrade to the latest version of PETSc.
53:::
54
55## Advanced: Obtain PETSc Development Version With Git
56
57Improvements and new features get added to `main` branch of PETSc Git repository. To obtain development sources, use:
58
59```console
60$ git clone https://gitlab.com/petsc/petsc.git petsc
61```
62
63or if you already have a local clone of PETSc Git repository
64
65```console
66$ git checkout main
67$ git pull
68```
69
70More details on contributing to PETSc development are at {any}`ch_contributing`. The development version of
71the documentation, which is largely the same as the release documentation is [available](https://petsc.org/main).
72
73(doc_releaseschedule)=
74
75## Release Schedule
76
77We provide new releases every 6 months, and patch updates to the current release every month.
78
79Releases (for example: 3.20.0, 3.21.0, etc. with corresponding Git tags v3.20.0, v3.21.0, etc):
80
81- March (end of the month)
82- September (end of the month)
83
84Patch updates (for example: 3.21.1, 2.21.2, etc. with corresponding Git tags v3.21.1, v3.21.2, etc)
85contain the latest release plus crucial bug fixes since that release:
86
87- Last week of every month (or first week on next month - if delayed)
88
89The monthly updates do not contain new features or any development work since the release, they merely contain crucial
90bug fixes.
91
92The ordering of PETSc branches and tags, as of May 2024 is given by (each level also contains the commits below it):
93
94- May (features added since v3.21.0) main branch
95- May (bug fixes since v3.21.1) release branch
96- April end (bug fixes since v3.21.0) v3.21.1 tag and tarball
97- March end (features added after v3.20.0) v3.21.0 tag and tarball
98- March end (bug fixes since v3.20.5) v3.20.6 tag and tarball
99- etc
100- October end (bug fixes since v3.20.0) v3.20.1 tag and tarball
101- September end (features added after v3.19.0) v3.20.0 tag and tarball
102
103After a new release of PETSc, the old version no longer gets patch updates. I.e., when 3.22.0 is released, bug fixes
104will go to 3.22.x - and petsc-3.21, petsc-3.20, etc., will not get any additional patch updates.
105
106PETSc does not follow **Semantic Versioning**, {cite}`semver-webpage`, rather it follows:
107
108- MAJOR version, a major reorganization. Unlikely to change in foreseeable future.
109- MINOR version, with new functionality and likely small API changes; most changes are backward compatible with deprecation. On a 6 month cycle.
110- PATCH version, with bug fixes - and minor functionality updates preserving the current API. On a monthly cycle.
111
112PETSc provides tools to allow you to stipulate what versions of PETSc it works with at configure time, compile time, or runtime of your package, see
113{any}`ch_versionchecking`.
114
115```{rubric} References
116```
117
118```{bibliography} /petsc.bib
119:filter: docname in docnames
120```
121