#### General:

- Removed
`--with-errorchecking`configure option. - Added new command line option
`-viewfromoptions`to disable`XXXViewFromOptions()`

calls.

#### Configure/Build:

- Removed
`--with-viewfromoptions`configure option in favor of the new command line option`-viewfromoptions`. - Following options are renamed to have more consistant names:
--with-packages-dir -> --with-packages-download-dir --with-external-packages-dir -> --with-packages-build-dir --package-dirs -> --with-packages-search-path --search-dirs -> --with-executables-search-path

#### IS:

#### PetscDraw:

#### PF:

#### Vec:

#### VecScatter:

#### PetscSection:

#### Mat:

- MatNullSpaceTest() now respects the options prefix of the provided Mat.
- Added MatMatTransposeSolve() to MUMPS interface.
- Added -mat_mumps_use_omp_threads [m] option to better support OpenMP in MUMPS.
- Added MatPartitioningViewFromOptions().
- Added MatPartitioningApplyND() to compute a nested dissection ordering of a matrix.
- Deprecated MatISGetMPIXAIJ() in favour of MatConvert().
- Added new matrix types for limited-memory variable-metric (MATLMVM) approximations of Jacobians.
- Added MATAIJSELL, a sub-type of AIJ that uses SELL format internally for SELL-optimized operations.

#### PC:

- PCKSPGetKSP() now raises an error if called on a PC which is not of type PCKSP
- Added PCKSPSetKSP()
- Added new PC based on the new LMVM matrices.

#### KSP:

- The KSP viewing options have changed. Now
- -ksp_compute_eigenvalues becomes -ksp_view_eigenvalues ascii
- -ksp_plot_eigenvalues becomes -ksp_view_eigenvalues draw
- -ksp_plot_eigencontours becomes -ksp_view_eigenvalues draw::draw_contour
- -ksp_compute_eigenvalues_explicitly becomes -ksp_view_eigenvalues_explicit ascii
- -ksp_plot_eigenvalues_explicitly becomes -ksp_view_eigenvalues_explicit draw
- -ksp_compute_singularvalues becomes -ksp_view_singularvalues ascii
- -ksp_final_residual becomes -ksp_view_final_residual

`KSPLSQR`

- Computes now an estimate of the operator's norm in the same way as Saunders and MATLAB, and uses it in the type-specific stopping criterion
`KSPLSQRConvergedDefault()`

; this now gives the same number of iterations as MATLAB's`lsqr()`

. - Added
`-ksp_lsqr_exact_mat_norm`

and`KSPLSQRSetExactMatNorm()`

to optionally compute and use the exact Frobenius norm instead of the estimate. `KSPLSQRMonitorDefault()`

and`-ksp_lsqr_monitor`

now additionally print the (estimate of) the operator's norm.- Allow setting
`-ksp_convergence_test lsqr`

(it's a default for`KSPLSQR`

, though). `KSPLSQRSetStandardErrorVec()`

is replaced by`KSPLSQRSetComputeStandardErrorVec()`

which now specifies whether standard error vector should be computed instead of setting the vector;- likewise, option
`-ksp_lsqr_set_standard_error`

is replaced by`-ksp_lsqr_compute_standard_error`

. - Renamed
`KSPLSQRGetArnorm()`

to`KSPLSQRGetNorms()`

and removed its`rhs_norm`

argument. - Renamed
`KSPLSQRDefaultConverged()`

to`KSPLSQRConvergedDefault()`

merged with`KSPConvergedLSQR()`

.

- Computes now an estimate of the operator's norm in the same way as Saunders and MATLAB, and uses it in the type-specific stopping criterion

#### SNES:

- SNESSetTolerances() and -snes_max_funcs now accept -1 to indicate unlimited number of function evaluations.

#### SNESLineSearch:

#### TAO:

- Added bound-constrained Newton-Krylov methods (BNLS, BNTR, BNTL).
- All quasi-Newton methods updated to use the new LMVM Mat objects.
- Added a bound-constrained quasi-Newton line search (BQNLS) method that re-uses BNLS infrastructure to replace BLMVM on next release.
- Bound-constrained conjugate gradient method expanded with new CG update types and nonlinear preconditioning.
- Removed
`-tao_type test`

. - Gradient testing can now be accessed with the options
`-tao_test_gradient`

,`-tao_test_gradient_view`

, and Hessian testing can be done with`-tao_test_hessian`

,`-tao_test_hessian_view`

(also works for matrix-free Hessian).

#### TS:

- Added symplectic time integrators for separable Hamiltonian systems (-ts_type basicsymplectic).

#### DM/DA:

- Renamed
`DMDAGetReducedDMDA()`

to`DMDACreateCompatibleDMDA()`

. - Added DMGetCompatibility() and implementation for DMDA

#### DMPlex:

- Added an interface DM and boundary label to DMPlexCreateHybridMesh()
- More refined control of
`DMView()`

when`PetscViewerType=PETSCVIEWERHDF5`

.`PetscViewerFormat`

can now be one of`{PETSC_VIEWER_HDF5_VIZ, PETSC_VIEWER_HDF5_XDMF, PETSC_VIEWER_HDF5_PETSC, PETSC_VIEWER_DEFAULT}`

. - Parallel mesh load (i.e. mesh distributed right from beginning) with
`DMLoad()`

,`PetscViewerType=PETSCVIEWERHDF5`

and`PetscViewerFormat=PETSC_VIEWER_HDF5_XDMF`

, or`DMPlexCreateFromFile()`

and`-dm_plex_create_from_hdf5_xdmf`

.

#### PetscViewer:

`PetscViewerVTKAddField()`

to allow skipping of DM check as fields are added