Version 3.3-0: 2026-09-18
    - REML = TRUE is now the default. Set REML = FALSE explicitly to reproduce
      the estimation method used by earlier releases.
    - Enable REML for GP and rGP with R-side student effects and GP with G-side
      student effects, using the full prediction-error covariance adjustments.
    - Correct VP persistence updates under REML to include fixed/random
      prediction-error cross-covariances.
    - Synchronize returned fixed effects, random effects, likelihood, and
      covariance matrices at the final iterate. Calculate covariance-parameter
      information from the profiled likelihood for both ML and REML.
      Differentiate in scaled coordinates to support small response units.
    - Use a closed-form residual covariance update for complete data and a
      positive-definite Cholesky update for incomplete observation patterns.
    - Scale initial variances to the observed data to avoid premature convergence
      caused by fixed starting values when response units are large or small.
    - Report iteration-limit failures with a warning and converged = FALSE.
      Retain loglik_history and full-precision covariance_parameters.
    - Correct native residual-moment weighting for noncontiguous row indices
      and translate native exceptions into R errors.
    - Preserve full precision in returned covariance matrices and teacher
      predictions; round only for display.

    - Validate controls, identifiers, observed response variation, and the
      fixed-effects design before fitting. Handle one-year fits, unused factor
      levels, singleton teacher groups, and wholly unobserved students.
    - Distinguish true missing teachers from identifiers beginning with NA.
      Retain known teacher histories on missing-score rows for later outcomes.
    - Interpret year consistently as consecutive numeric indices in fixed-effect
      formulas for both student-side choices. Use a separate covariate for
      original numeric year spacing. The default formula remains categorical.
    - Add coef(), vcov(), fitted(), residuals(), nobs(), and logLik() methods.
      Fitted values and residuals are returned in observed input-row order.
    - Enable the bias permutation diagnostic for GP, rGP, and G-side student
      effects by permuting whole exchangeable blocks. Correct singleton
      permutations and use finite Monte Carlo p-values (1 + B)/(1 + n_perms).
    - Add independent plot and verbose controls to bias.test.custom().
      Handle degenerate histograms and validate contrasts and permutation counts.
    - Guard AICc when undefined and return NA for REML; document the existing
      ML correction as a heuristic for correlated observations.
    - Correct year labels in diagnostic plots and restore graphics settings
      after errors. Printing methods return their input invisibly.

    - Maintain all help through roxygen comments in R source files; regenerate
      help and S3 registrations with tools/document.R in the maintenance repo.
    - Add testthat coverage for independent Gaussian equations, ML/REML moments,
      likelihood Hessians, closed-form variance estimates, missing data,
      convergence, scaling, input validation, diagnostics, and standard methods.
    - Correct references and document covariance-estimation and permutation-test
      assumptions. Bundled data and the GPL-2 license are unchanged.

Version 3.2-0: 2024-12-12
	- Efficiency improvements for bias.test.custom()

Version 3.1-2: 2024-11-17
	- Correct permutations in bias.test.custom() to occur independently over random effects
	      belonging to different variance components. Not yet enabled for "GP" or "rGP" persistence.

Version 3.1-1: 2024-10-14
	- Correct data format check in GPvam.R
	- Add bias.test.custom() function

Version 3.0-9: 2023-01-07
	- Changes to DESCRIPTION file.

Version 3.0-8: 2022-09-03
	- Changes to Matrix() references to conform with Matrix package changes.

Version 3.0-7: 2021-01-05
	- Changes to Matrix() references to conform with Matrix package changes.

Version 3.0-6: 2019-04-25
	- Enable REML estimation for persistence = CP, VP, or ZP.

Version 3.0-5: 2018-04-18
	- Minor updates to package structure to conform with new CRAN requirements.

Version 3.0-4: 2017-03-15
	- Minor updates to package structure to conform with new CRAN requirements
          related to compiled C++ code.

Version 3.0-3: 2015-07-19
	- Minor updates to package structure to conform with new CRAN requirements.

Version 3.0-2: 2014-06-22
	
	- Changed method used to calculate rank of X matrix to 
	  avoid conversion to a dense matrix.

	- Added information to documentation about program run time.

	- Added data set GPvam.benchmark, which contains program run time
	  and memory requirements for various simulated data sets.

	- Changed default options to Hessian=FALSE and verbose=TRUE.

Version 3.0-1: 2014-01-31
	
	- Corrected use of 'break' reserved word

Version 3.0-0: 2014-01-30
	
	- The program runs much faster now with student.side="R"
	  due to the use of Rcpp and RcppArmadillo and a re-ordered
	  nested loop.

	- Added references to recently accepted papers in
          help files.

Version 2.0-0: 2012-07-05
	
	- Improved scalability of program when student.side="R". 
	  For smaller data sets, certain operations work faster 
	  with dense matrices, but these matrices grow in size 
	  with the data. For large data sets, we now rely 
	  exclusively on sparse matrices.

	- Added support for the variable persistence (VP) model,
	  including the ability to estimate the persistence 
	  parameters. As special cases, the complete and zero 
	  persistence models have also been included.

Version 1.1-0: 2012-04-03

	- Corrected issue where program crashed when updated
          covariance matrix was not symmetric due to rounding
          (i.e. transposed compoenents may have differered by
          1E-14 or so).
        
        - Added caterpillar plots to plot() output.


Version 1.0-0: 2012-02-19

        - First public release.
