git: 106516fff7f1 - main - science/dynare: update 5.4 → 7.0

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Mon, 11 May 2026 07:15:35 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=106516fff7f11f27be0ed5241e4caf583042b78b

commit 106516fff7f11f27be0ed5241e4caf583042b78b
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-05-11 06:29:11 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-05-11 07:15:17 +0000

    science/dynare: update 5.4 → 7.0
---
 science/dynare/Makefile                            |   43 +-
 science/dynare/distinfo                            |    6 +-
 science/dynare/files/example.sh                    |    9 +
 .../dynare/files/patch-dynare++_kord_journal.cc    |   25 -
 science/dynare/files/patch-meson.build             |   26 +
 .../dynare/files/patch-mex_build_octave_configure  |   88 -
 .../patch-mex_sources_libkorder_kord_journal.cc    |   29 +
 ...tch-mex_sources_libkorder_utils_thread__pool.cc |   94 +
 ...iterations_local__state__space__iteration__2.cc |   46 +-
 .../files/patch-preprocessor_src_DynareMain.cc     |   16 +
 .../files/patch-preprocessor_src_ModelTree.cc      |  111 ++
 .../files/patch-preprocessor_src_ModelTree.hh      |   30 +
 .../files/patch-preprocessor_src_meson.build       |   21 +
 science/dynare/pkg-plist                           | 1792 ++++++++++----------
 14 files changed, 1293 insertions(+), 1043 deletions(-)

diff --git a/science/dynare/Makefile b/science/dynare/Makefile
index 5ea4a77940c6..4b8d1e2aa43a 100644
--- a/science/dynare/Makefile
+++ b/science/dynare/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	dynare
-DISTVERSION=	5.4
-PORTREVISION=	16
+DISTVERSION=	7.0
 CATEGORIES=	science # economics
 MASTER_SITES=	https://www.dynare.org/release/source/
 
@@ -16,42 +15,26 @@ BROKEN_aarch64=	cannot open module file 'ieee_arithmetic.mod' for reading at (1)
 BROKEN=		requires OpenMP support that is missing on this architecture
 .endif
 
-BUILD_DEPENDS=	${LOCALBASE}/include/boost/tokenizer.hpp:devel/boost-libs
-LIB_DEPENDS=	libhdf5.so:science/hdf5 \
-		libmatio.so:math/matio \
-		libopenblas.so:math/openblas \
-		libsz.so:science/libaec
+BUILD_DEPENDS=	${LOCALBASE}/include/boost/tokenizer.hpp:devel/boost-libs \
+		octave:math/octave
+LIB_DEPENDS=	libopenblas.so:math/openblas \
+		libslicot.so:math/slicot \
+		libumfpack.so:math/suitesparse-umfpack
 RUN_DEPENDS=	epstool:graphics/epstool \
 		gnuplot:math/gnuplot \
+		octave:math/octave \
+		octave-forge-datatypes>0:math/octave-forge-datatypes \
+		octave-forge-statistics>0:math/octave-forge-statistics \
 		pstoedit:graphics/pstoedit \
-		xfig:graphics/xfig # README says that these executables are required for the test suite
+		xfig:graphics/xfig
 
-USES=		bison compiler:c++17-lang fortran gmake localbase:ldflags tar:xz tex
-USE_TEX=	pdftex
+USES=		bison compiler:c++20-lang fortran localbase:ldflags meson pkgconfig tar:xz
 
-GNU_CONFIGURE=	yes
-CONFIGURE_ARGS=	--disable-matlab \
-		--disable-doc
-
-FCFLAGS+=	-fPIC # required because configure tests with -shared
+MESON_ARGS=	-Dbuild_for=octave \
+		-Dpardiso=disabled
 
 SUB_FILES=	pkg-message
 
-OPTIONS_DEFINE=			OCTAVE
-OPTIONS_DEFAULT=		OCTAVE
-OPTIONS_SUB=			yes
-
-OCTAVE_DESC=			Integrate with Octave (main way to use Dynare)
-OCTAVE_CONFIGURE_ENABLE=	octave
-OCTAVE_CONFIGURE_ON=		--disable-mex-kalman-steady-state # Kalman Steady State MEX file for Octave - requires the non-free library slicot-5.0
-OCTAVE_BUILD_DEPENDS=		octave:math/octave
-OCTAVE_LIB_DEPENDS=		libfftw3.so:math/fftw3 \
-				libfftw3f.so:math/fftw3-float \
-				libgsl.so:math/gsl \
-				libumfpack.so:math/suitesparse-umfpack
-OCTAVE_RUN_DEPENDS=		octave:math/octave \
-				octave-forge-statistics>0:math/octave-forge-statistics
-
 post-install:
 	# remove empty directories, see https://git.dynare.org/Dynare/dynare/-/issues/1835
 	@${FIND} ${STAGEDIR}${PREFIX} -type d -empty -delete
diff --git a/science/dynare/distinfo b/science/dynare/distinfo
index 107aa2a671f1..7223caef9cd9 100644
--- a/science/dynare/distinfo
+++ b/science/dynare/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1679621855
-SHA256 (dynare-5.4.tar.xz) = c174a3ebcaf8c4566b9836abad8c04148011bec2ec610ded234f406bfbdd10f8
-SIZE (dynare-5.4.tar.xz) = 18005284
+TIMESTAMP = 1778438040
+SHA256 (dynare-7.0.tar.xz) = 3c1691f68386f4d74d3ca518d19df34d82644eba1db066964e77434487a3a083
+SIZE (dynare-7.0.tar.xz) = 23899676
diff --git a/science/dynare/files/example.sh b/science/dynare/files/example.sh
new file mode 100644
index 000000000000..955c3d260962
--- /dev/null
+++ b/science/dynare/files/example.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+# Run a Dynare example model (neo-classical Ramsey deterministic).
+# Dynare does not allow periods in directory names, so we copy the
+# .mod file to a temporary directory before running.
+tmpdir=$(mktemp -d)
+trap 'rm -rf "$tmpdir"' EXIT
+cp ./work/dynare-7.0/tests/optimal_policy/neo_ramsey_det_bytecode.mod "$tmpdir/"
+cd "$tmpdir"
+octave --eval 'dynare neo_ramsey_det_bytecode.mod'
diff --git a/science/dynare/files/patch-dynare++_kord_journal.cc b/science/dynare/files/patch-dynare++_kord_journal.cc
deleted file mode 100644
index 2abfa11f8d4a..000000000000
--- a/science/dynare/files/patch-dynare++_kord_journal.cc
+++ /dev/null
@@ -1,25 +0,0 @@
-- FreeBSD compatibility.
-
---- dynare++/kord/journal.cc.orig	2021-08-14 01:22:14 UTC
-+++ dynare++/kord/journal.cc
-@@ -33,7 +33,7 @@
- # include <sys/utsname.h>  // For uname()
- # include <cstdlib>        // For getloadavg()
- # include <unistd.h>       // For sysconf()
--# ifdef __APPLE__
-+# if defined(__APPLE__) || defined(__FreeBSD__)
- #  include <sys/types.h>
- #  include <sys/sysctl.h>
- # endif
-@@ -57,9 +57,9 @@ SystemResources::pageSize()
- long
- SystemResources::availableMemory()
- {
--#if !defined(_WIN32) && !defined(__APPLE__)
-+#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__FreeBSD__)
-   return sysconf(_SC_AVPHYS_PAGES)*pageSize();
--#elif defined(__APPLE__)
-+#elif defined(__APPLE__) || defined(__FreeBSD__)
-   unsigned long usermem = 0;
-   size_t len = sizeof usermem;
-   static int mib[2] = { CTL_HW, HW_USERMEM };
diff --git a/science/dynare/files/patch-meson.build b/science/dynare/files/patch-meson.build
new file mode 100644
index 000000000000..3b33358e5ef6
--- /dev/null
+++ b/science/dynare/files/patch-meson.build
@@ -0,0 +1,26 @@
+-- FreeBSD compatibility: link the korder library and its test executables against pthreads.
+-- The korder library's thread_pool.cc uses std::thread which requires pthreads on FreeBSD.
+-- On Linux/macOS this is implicit; on FreeBSD it must be explicitly declared.
+
+--- meson.build.orig	2025-03-19 00:00:00 UTC
++++ meson.build	2025-03-19 00:00:00 UTC
+@@ -496,9 +496,10 @@
+                'mex/sources/libkorder/dynamic_m.cc' ]
+ korder_incdir = include_directories('mex/sources/libkorder', 'mex/sources/libkorder/tl', 'mex/sources/libkorder/sylv',
+                                     'mex/sources/libkorder/kord', 'mex/sources/libkorder/utils')
++threads_dep = dependency('threads')
+ korder_lib = static_library('korder', korder_src,
+                             kwargs : static_library_kwargs + { 'include_directories' : static_library_kwargs.get('include_directories') + korder_incdir},
+-                            dependencies : [ blas_dep, lapack_dep, dl_dep ])
++                            dependencies : [ blas_dep, lapack_dep, dl_dep, threads_dep ])
+ 
+ korder_mex_kwargs = mex_kwargs + { 'include_directories' : mex_kwargs.get('include_directories') + korder_incdir}
+ shared_module('gensylv', 'mex/sources/gensylv/gensylv.cc', kwargs : korder_mex_kwargs, link_with : korder_lib)
+@@ -515,6 +516,7 @@
+                         'cpp_args' : mex_kwargs['cpp_args'],
+                         'link_args' : exe_link_args,
+                         'build_rpath' : exe_rpath,
++                        'dependencies' : threads_dep,
+                         'link_with' : korder_lib }
+ 
+ k_order_sylv_test_exe = executable('k_order_sylv_test', [ 'mex/sources/libkorder/sylv/tests/MMMatrix.cc',
diff --git a/science/dynare/files/patch-mex_build_octave_configure b/science/dynare/files/patch-mex_build_octave_configure
deleted file mode 100644
index 774083adc441..000000000000
--- a/science/dynare/files/patch-mex_build_octave_configure
+++ /dev/null
@@ -1,88 +0,0 @@
-- remove fortran-related crashing section when fortran compiler is checked for cross-compilation
-- it's unclear why the fortran-built executable crashes
-
---- mex/build/octave/configure.orig	2022-04-23 05:48:46 UTC
-+++ mex/build/octave/configure
-@@ -3332,44 +3332,44 @@ _ACEOF
- ac_clean_files="$ac_clean_files conftest.out"
- # Check that the compiler produces executables we can run.  If not, either
- # the compiler is broken, or we cross compile.
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
--$as_echo_n "checking whether we are cross compiling... " >&6; }
--if test "$cross_compiling" != yes; then
--  { { ac_try="$ac_link"
--case "(($ac_try" in
--  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
--  *) ac_try_echo=$ac_try;;
--esac
--eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
--$as_echo "$ac_try_echo"; } >&5
--  (eval "$ac_link") 2>&5
--  ac_status=$?
--  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
--  test $ac_status = 0; }
--  if { ac_try='./conftest$ac_cv_exeext'
--  { { case "(($ac_try" in
--  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
--  *) ac_try_echo=$ac_try;;
--esac
--eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
--$as_echo "$ac_try_echo"; } >&5
--  (eval "$ac_try") 2>&5
--  ac_status=$?
--  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
--  test $ac_status = 0; }; }; then
--    cross_compiling=no
--  else
--    if test "$cross_compiling" = maybe; then
--	cross_compiling=yes
--    else
--	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
--$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
--as_fn_error $? "cannot run Fortran compiled programs.
--If you meant to cross compile, use \`--host'.
--See \`config.log' for more details" "$LINENO" 5; }
--    fi
--  fi
--fi
-+#{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-+#$as_echo_n "checking whether we are cross compiling... " >&6; }
-+#if test "$cross_compiling" != yes; then
-+#  { { ac_try="$ac_link"
-+#case "(($ac_try" in
-+#  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+#  *) ac_try_echo=$ac_try;;
-+#esac
-+#eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-+#$as_echo "$ac_try_echo"; } >&5
-+#  (eval "$ac_link") 2>&5
-+#  ac_status=$?
-+#  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+#  test $ac_status = 0; }
-+#  if { ac_try='./conftest$ac_cv_exeext'
-+#  { { case "(($ac_try" in
-+#  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+#  *) ac_try_echo=$ac_try;;
-+#esac
-+#eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-+#$as_echo "$ac_try_echo"; } >&5
-+#  (eval "$ac_try") 2>&5
-+#  ac_status=0
-+#  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+#  test $ac_status = 0; }; }; then
-+#    cross_compiling=no
-+#  else
-+#    if test "$cross_compiling" = maybe; then
-+#	cross_compiling=yes
-+#    else
-+#	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-+#$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+#as_fn_error $? "cannot run Fortran compiled programs.
-+#If you meant to cross compile, use \`--host'.
-+#See \`config.log' for more details" "$LINENO" 5; }
-+#    fi
-+#  fi
-+#fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
- $as_echo "$cross_compiling" >&6; }
- 
diff --git a/science/dynare/files/patch-mex_sources_libkorder_kord_journal.cc b/science/dynare/files/patch-mex_sources_libkorder_kord_journal.cc
new file mode 100644
index 000000000000..ca7a6a3a4eb7
--- /dev/null
+++ b/science/dynare/files/patch-mex_sources_libkorder_kord_journal.cc
@@ -0,0 +1,29 @@
+-- FreeBSD compatibility: fix invalid preprocessor directive '#ifdef __APPLE__ || defined(__FreeBSD__)'
+-- (the '|| defined(...)' part is silently ignored by the preprocessor). The correct form is
+-- '#if defined(__APPLE__) || defined(__FreeBSD__)'.
+-- Also adds FreeBSD-specific memory query using sysctl(3) instead of sysconf(3), as
+-- _SC_AVPHYS_PAGES is not available on FreeBSD.
+
+--- mex/sources/libkorder/kord/journal.cc.orig	2025-03-19 00:00:00 UTC
++++ mex/sources/libkorder/kord/journal.cc	2025-03-19 00:00:00 UTC
+@@ -33,7 +33,7 @@
+ # include <sys/time.h>     // For getrusage()
+ # include <sys/utsname.h>  // For uname()
+ # include <unistd.h>       // For sysconf()
+-# ifdef __APPLE__
++# if defined(__APPLE__) || defined(__FreeBSD__)
+ #  include <sys/sysctl.h>
+ #  include <sys/types.h>
+ # endif
+@@ -58,9 +58,9 @@
+ long
+ SystemResources::availableMemory()
+ {
+-#if !defined(_WIN32) && !defined(__APPLE__)
++#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__FreeBSD__)
+   return sysconf(_SC_AVPHYS_PAGES) * pageSize();
+-#elif defined(__APPLE__)
++#elif defined(__APPLE__) || defined(__FreeBSD__)
+   unsigned long usermem = 0;
+   size_t len = sizeof usermem;
+   static int mib[2] = {CTL_HW, HW_USERMEM};
diff --git a/science/dynare/files/patch-mex_sources_libkorder_utils_thread__pool.cc b/science/dynare/files/patch-mex_sources_libkorder_utils_thread__pool.cc
new file mode 100644
index 000000000000..01507a472805
--- /dev/null
+++ b/science/dynare/files/patch-mex_sources_libkorder_utils_thread__pool.cc
@@ -0,0 +1,94 @@
+-- FreeBSD compatibility: replace std::jthread and std::stop_token (C++20 features not yet
+-- available in FreeBSD's libc++) with std::thread and std::atomic<bool> for thread stop
+-- signalling.
+
+--- mex/sources/libkorder/utils/thread_pool.cc.orig	2026-05-10 20:43:59 UTC
++++ mex/sources/libkorder/utils/thread_pool.cc
+@@ -18,6 +18,7 @@
+  */
+ 
+ #include <algorithm>
++#include <atomic>
+ #include <cassert>
+ #include <condition_variable>
+ #include <map>
+@@ -45,7 +46,20 @@ std::mutex job_group_mut; // Shared by jobs in the job
+ std::map<job*, status> job_group_status;
+ std::mutex job_group_mut; // Shared by jobs in the job group
+ 
+-std::vector<std::jthread> threads;
++std::atomic<bool> stop_requested{false};
++std::vector<std::thread> threads;
++// Cleanup guard: destroyed before 'threads', so it joins all threads before they are destructed
++struct Cleanup
++{
++  ~Cleanup()
++  {
++    stop_requested = true;
++    thread_cv.notify_all();
++    for (auto& t : threads)
++      if (t.joinable())
++        t.join();
++  }
++} cleanup_guard;
+ } // End of unnamed namespace
+ 
+ void
+@@ -64,16 +78,19 @@ initialize(int thread_number)
+   if (static_cast<int>(threads.size()) == thread_number)
+     return;
+   else
+-    threads.clear();
++    {
++      // Stop existing threads before clearing the vector
++      stop_requested = true;
++      thread_cv.notify_all();
++      for (auto& t : threads)
++        if (t.joinable())
++          t.join();
++      threads.clear();
++      stop_requested = false;
++    }
+ 
+   for (int i {0}; i < thread_number; i++)
+-    /* Passing the stop_token by const reference is ok (and makes clang-tidy happier),
+-       since the std::jthread constructor calls the lambda with the return argument of the
+-       get_stop_token() method, which returns a stop_token by value; hence there is no lifetime
+-       issue. See:
+-       https://stackoverflow.com/questions/72990607/const-stdstop-token-or-just-stdstop-token-as-parameter-for-thread-funct
+-     */
+-    threads.emplace_back([](const std::stop_token& stoken) {
++    threads.emplace_back([]() {
+       std::unique_lock lk {global_mut};
+       job* selected_job;
+       status* selected_job_status;
+@@ -90,17 +107,20 @@ initialize(int thread_number)
+         return false;
+       };
+ 
+-      while (!stoken.stop_requested())
+-        if (thread_cv.wait(lk, stoken, pick_job))
+-          {
+-            lk.unlock();
+-            selected_job->operator()(job_group_mut);
+-            lk.lock();
++      while (!stop_requested)
++        {
++          thread_cv.wait(lk, [&] { return stop_requested.load() || pick_job(); });
++          if (!stop_requested)
++            {
++              lk.unlock();
++              selected_job->operator()(job_group_mut);
++              lk.lock();
+ 
+-            *selected_job_status = status::done;
++              *selected_job_status = status::done;
+ 
+-            director_cv.notify_one();
+-          }
++              director_cv.notify_one();
++            }
++        }
+     });
+ }
+ 
diff --git a/science/dynare/files/patch-mex_sources_local__state__space__iterations_local__state__space__iteration__2.cc b/science/dynare/files/patch-mex_sources_local__state__space__iterations_local__state__space__iteration__2.cc
index 78fbffce6b66..c6380c9b904b 100644
--- a/science/dynare/files/patch-mex_sources_local__state__space__iterations_local__state__space__iteration__2.cc
+++ b/science/dynare/files/patch-mex_sources_local__state__space__iterations_local__state__space__iteration__2.cc
@@ -1,38 +1,42 @@
-- workaround for https://bugs.llvm.org/show_bug.cgi?id=49238
+-- FreeBSD compatibility: replace C++17 structured bindings with named tuple references.
+-- Clang's OpenMP implementation does not support capturing structured bindings in parallel
+-- regions (structured bindings have no address in the OpenMP data-sharing model).
 
---- mex/sources/local_state_space_iterations/local_state_space_iteration_2.cc.orig	2022-01-10 23:38:14 UTC
-+++ mex/sources/local_state_space_iterations/local_state_space_iteration_2.cc
-@@ -61,8 +61,14 @@ ss2Iteration_pruning(double *y2, double *y1, const dou
+--- mex/sources/local_state_space_iterations/local_state_space_iteration_2.cc.orig	2025-03-19 00:00:00 UTC
++++ mex/sources/local_state_space_iterations/local_state_space_iteration_2.cc	2025-03-19 00:00:00 UTC
+@@ -69,8 +69,15 @@
    const double one = 1.0;
    const blas_int ONE = 1;
  #endif
 -  auto [ii1, ii2, ii3] = set_vector_of_indices(n, m); // vector indices for ghxx
 -  auto [jj1, jj2, jj3] = set_vector_of_indices(q, m); // vector indices for ghuu
-+  auto [ii1_, ii2_, ii3_] = set_vector_of_indices(n, m); // vector indices for ghxx
-+  auto ii1 = ii1_;
-+  auto ii2 = ii2_;
-+  auto ii3 = ii3_;
-+  auto [jj1_, jj2_, jj3_] = set_vector_of_indices(q, m); // vector indices for ghuu
-+  auto jj1 = jj1_;
-+  auto jj2 = jj2_;
-+  auto jj3 = jj3_;
++  // Use named tuple variables instead of structured bindings (clang OpenMP limitation)
++  auto ghxx_indices = set_vector_of_indices(n, m);
++  const auto& ii1 = std::get<0>(ghxx_indices);
++  const auto& ii2 = std::get<1>(ghxx_indices);
++  const auto& ii3 = std::get<2>(ghxx_indices);
++  auto ghuu_indices = set_vector_of_indices(q, m);
++  const auto& jj1 = std::get<0>(ghuu_indices);
++  const auto& jj2 = std::get<1>(ghuu_indices);
++  const auto& jj3 = std::get<2>(ghuu_indices);
  #pragma omp parallel for num_threads(number_of_threads)
    for (int particle = 0; particle < s; particle++)
      {
-@@ -139,8 +145,14 @@ ss2Iteration(double *y, const double *yhat, const doub
+@@ -148,8 +155,15 @@
    const double one = 1.0;
    const blas_int ONE = 1;
  #endif
 -  auto [ii1, ii2, ii3] = set_vector_of_indices(n, m); // vector indices for ghxx
 -  auto [jj1, jj2, jj3] = set_vector_of_indices(q, m); // vector indices for ghuu
-+  auto [ii1_, ii2_, ii3_] = set_vector_of_indices(n, m); // vector indices for ghxx
-+  auto ii1 = ii1_;
-+  auto ii2 = ii2_;
-+  auto ii3 = ii3_;
-+  auto [jj1_, jj2_, jj3_] = set_vector_of_indices(q, m); // vector indices for ghuu
-+  auto jj1 = jj1_;
-+  auto jj2 = jj2_;
-+  auto jj3 = jj3_;
++  // Use named tuple variables instead of structured bindings (clang OpenMP limitation)
++  auto ghxx_indices = set_vector_of_indices(n, m);
++  const auto& ii1 = std::get<0>(ghxx_indices);
++  const auto& ii2 = std::get<1>(ghxx_indices);
++  const auto& ii3 = std::get<2>(ghxx_indices);
++  auto ghuu_indices = set_vector_of_indices(q, m);
++  const auto& jj1 = std::get<0>(ghuu_indices);
++  const auto& jj2 = std::get<1>(ghuu_indices);
++  const auto& jj3 = std::get<2>(ghuu_indices);
  #pragma omp parallel for num_threads(number_of_threads)
    for (int particle = 0; particle < s; particle++)
      {
diff --git a/science/dynare/files/patch-preprocessor_src_DynareMain.cc b/science/dynare/files/patch-preprocessor_src_DynareMain.cc
new file mode 100644
index 000000000000..3923dec9e352
--- /dev/null
+++ b/science/dynare/files/patch-preprocessor_src_DynareMain.cc
@@ -0,0 +1,16 @@
+-- FreeBSD compatibility: replace std::jthread and std::stop_token (C++20 features not yet
+-- available in FreeBSD's libc++ as of clang 19) with std::thread and std::atomic<bool> for
+-- thread stop signalling in the dynare preprocessor's MEX parallel compilation worker pool.
+-- Also adds a RAII MEXWorkersJoiner struct to safely join threads on program exit.
+
+--- preprocessor/src/DynareMain.cc.orig	2025-03-19 00:00:00 UTC
++++ preprocessor/src/DynareMain.cc	2025-03-19 00:00:00 UTC
+@@ -511,7 +511,7 @@
+     }
+ 
+   if (mod_file->use_dll)
+-    ModelTree::initializeMEXCompilationWorkers(max(jthread::hardware_concurrency(), 1U), dynareroot,
++    ModelTree::initializeMEXCompilationWorkers(max(thread::hardware_concurrency(), 1U), dynareroot,
+                                                mexext);
+ 
+   if (json == JsonOutputPointType::parsing)
diff --git a/science/dynare/files/patch-preprocessor_src_ModelTree.cc b/science/dynare/files/patch-preprocessor_src_ModelTree.cc
new file mode 100644
index 000000000000..db16d1fcb0be
--- /dev/null
+++ b/science/dynare/files/patch-preprocessor_src_ModelTree.cc
@@ -0,0 +1,111 @@
+-- FreeBSD compatibility: replace std::jthread and std::stop_token (C++20 features not yet
+-- available in FreeBSD's libc++ as of clang 19) with std::thread and std::atomic<bool> for
+-- thread stop signalling in the dynare preprocessor's MEX parallel compilation worker pool.
+-- Also adds a RAII MEXWorkersJoiner struct to safely join threads on program exit.
+
+--- preprocessor/src/ModelTree.cc.orig	2025-03-19 00:00:00 UTC
++++ preprocessor/src/ModelTree.cc	2025-03-19 00:00:00 UTC
+@@ -47,7 +47,18 @@
+ vector<tuple<filesystem::path, set<filesystem::path>, string>> ModelTree::mex_compilation_queue;
+ set<filesystem::path> ModelTree::mex_compilation_ongoing, ModelTree::mex_compilation_done,
+     ModelTree::mex_compilation_failed;
+-vector<jthread> ModelTree::mex_compilation_workers;
++/* NB: stop_requested must be listed *before* workers so it is destroyed *after*
++   workers are joined (reverse destruction order). Workers rely on stop_requested
++   being valid while they run. */
++atomic<bool> ModelTree::mex_compilation_stop_requested{false};
++vector<thread> ModelTree::mex_compilation_workers;
++/* Declared after workers so it is destroyed first; its destructor signals all
++   worker threads to stop and joins them before the vector destructor runs
++   (which would call std::terminate on still-joinable threads). */
++static const struct MEXWorkersJoiner
++{
++  ~MEXWorkersJoiner() { ModelTree::stopMEXCompilationWorkers(); }
++} mex_workers_joiner;
+ 
+ void
+ ModelTree::copyHelper(const ModelTree& m)
+@@ -1961,13 +1972,7 @@
+   cout << "Spawning " << numworkers << " threads for compiling MEX files." << '\n';
+ 
+   for (int i {0}; i < numworkers; i++)
+-    /* Passing the stop_token by const reference is ok (and makes clang-tidy happier),
+-       since the std::jthread constructor calls the lambda with the return argument of the
+-       get_stop_token() method, which returns a stop_token by value; hence there is no lifetime
+-       issue. See:
+-       https://stackoverflow.com/questions/72990607/const-stdstop-token-or-just-stdstop-token-as-parameter-for-thread-funct
+-     */
+-    mex_compilation_workers.emplace_back([](const stop_token& stoken) {
++    mex_compilation_workers.emplace_back([] {
+       unique_lock lk {mex_compilation_mut};
+       filesystem::path output;
+       string cmd;
+@@ -1989,23 +1994,27 @@
+         return false;
+       };
+ 
+-      while (!stoken.stop_requested())
+-        if (mex_compilation_cv.wait(lk, stoken, pick_job))
+-          {
+-            lk.unlock();
+-            int r {system(cmd.c_str())};
+-            lk.lock();
+-            mex_compilation_ongoing.erase(output);
+-            if (r)
+-              mex_compilation_failed.insert(output);
+-            else
+-              mex_compilation_done.insert(output);
+-            /* The object just compiled may be a prerequisite for several
+-               other objects, so notify all waiting workers. Also needed to
+-               notify the main thread when in
+-               ModelTree::waitForMEXCompilationWorkers().*/
+-            mex_compilation_cv.notify_all();
+-          }
++      while (!mex_compilation_stop_requested)
++        {
++          mex_compilation_cv.wait(lk, [&pick_job] {
++            return mex_compilation_stop_requested.load() || pick_job();
++          });
++          if (mex_compilation_stop_requested)
++            break;
++          lk.unlock();
++          int r {system(cmd.c_str())};
++          lk.lock();
++          mex_compilation_ongoing.erase(output);
++          if (r)
++            mex_compilation_failed.insert(output);
++          else
++            mex_compilation_done.insert(output);
++          /* The object just compiled may be a prerequisite for several
++             other objects, so notify all waiting workers. Also needed to
++             notify the main thread when in
++             ModelTree::waitForMEXCompilationWorkers().*/
++          mex_compilation_cv.notify_all();
++        }
+     });
+ 
+   /* Set some environment variables needed for compilation on Windows/MATLAB
+@@ -2062,12 +2071,22 @@
+       for (const auto& p : mex_compilation_failed)
+         cerr << p.string() << " ";
+       cerr << '\n';
+-      lk.unlock(); // So that threads can process their stoken
++      lk.unlock(); // Release lock so worker threads can exit
+       exit(EXIT_FAILURE);
+     }
+ }
+ 
+ void
++ModelTree::stopMEXCompilationWorkers()
++{
++  mex_compilation_stop_requested = true;
++  mex_compilation_cv.notify_all();
++  for (auto& w : mex_compilation_workers)
++    if (w.joinable())
++      w.join();
++}
++
++void
+ ModelTree::computingPassBlock(const eval_context_t& eval_context, bool no_tmp_terms)
+ {
+   if (!heterogeneity_table.empty())
diff --git a/science/dynare/files/patch-preprocessor_src_ModelTree.hh b/science/dynare/files/patch-preprocessor_src_ModelTree.hh
new file mode 100644
index 000000000000..9bee40325319
--- /dev/null
+++ b/science/dynare/files/patch-preprocessor_src_ModelTree.hh
@@ -0,0 +1,30 @@
+-- FreeBSD compatibility: replace std::jthread and std::stop_token (C++20 features not yet
+-- available in FreeBSD's libc++ as of clang 19) with std::thread and std::atomic<bool> for
+-- thread stop signalling in the dynare preprocessor's MEX parallel compilation worker pool.
+
+--- preprocessor/src/ModelTree.hh.orig	2025-03-19 00:00:00 UTC
++++ preprocessor/src/ModelTree.hh	2025-03-19 00:00:00 UTC
+@@ -22,6 +22,7 @@
+ 
+ #include <array>
+ #include <cassert>
++#include <atomic>
+ #include <condition_variable>
+ #include <deque>
+ #include <filesystem>
+@@ -441,8 +442,14 @@
+   vector<int> endo2eq;
+ 
+   // Stores workers used for compiling MEX files in parallel
+-  static vector<jthread> mex_compilation_workers;
++  static vector<thread> mex_compilation_workers;
++  static atomic<bool> mex_compilation_stop_requested;
+ 
++public:
++  static void stopMEXCompilationWorkers();
++
++private:
++
+   /* The following variables implement the thread synchronization mechanism for
+      limiting the number of concurrent GCC processes and tracking dependencies
+      between object files. */
diff --git a/science/dynare/files/patch-preprocessor_src_meson.build b/science/dynare/files/patch-preprocessor_src_meson.build
new file mode 100644
index 000000000000..58a3cc21e06f
--- /dev/null
+++ b/science/dynare/files/patch-preprocessor_src_meson.build
@@ -0,0 +1,21 @@
+-- FreeBSD compatibility: link the dynare preprocessor against pthreads.
+-- std::thread requires pthreads on FreeBSD; the original code used std::jthread
+-- whose thread support was implicitly pulled in by the C++ standard library.
+-- After replacing jthread with std::thread, an explicit threads dependency is needed.
+
+--- preprocessor/src/meson.build.orig	2025-03-19 00:00:00 UTC
++++ preprocessor/src/meson.build	2025-03-19 00:00:00 UTC
+@@ -1,4 +1,5 @@
+ boost_dep = dependency('boost')
++threads_dep = dependency('threads')
+ 
+ ## Flex stuff
+ flex_exe = find_program('flex')
+@@ -74,6 +75,6 @@
+ endif
+ 
+ executable('dynare-preprocessor', preprocessor_src, flex_src, flexlexer_h, bison_src,
+-           include_directories : preprocessor_incdir, dependencies : boost_dep,
++           include_directories : preprocessor_incdir, dependencies : [boost_dep, threads_dep],
+            link_args : preprocessor_link_args,
+            install : true)
diff --git a/science/dynare/pkg-plist b/science/dynare/pkg-plist
index 4d4f681e37f0..edf5857ceec4 100644
--- a/science/dynare/pkg-plist
+++ b/science/dynare/pkg-plist
@@ -1,30 +1,4 @@
-bin/dynare++
 bin/dynare-preprocessor
-lib/dynare/contrib/jsonlab/jsonlab/AUTHORS.txt
-lib/dynare/contrib/jsonlab/jsonlab/ChangeLog.txt
-lib/dynare/contrib/jsonlab/jsonlab/LICENSE_BSD.txt
-lib/dynare/contrib/jsonlab/jsonlab/LICENSE_GPLv3.txt
-lib/dynare/contrib/jsonlab/jsonlab/README.rst
-lib/dynare/contrib/jsonlab/jsonlab/README.txt
-lib/dynare/contrib/jsonlab/jsonlab/examples/demo_jsonlab_basic.m
-lib/dynare/contrib/jsonlab/jsonlab/examples/demo_ubjson_basic.m
-lib/dynare/contrib/jsonlab/jsonlab/examples/example1.json
-lib/dynare/contrib/jsonlab/jsonlab/examples/example2.json
-lib/dynare/contrib/jsonlab/jsonlab/examples/example3.json
-lib/dynare/contrib/jsonlab/jsonlab/examples/example4.json
-lib/dynare/contrib/jsonlab/jsonlab/examples/jsonlab_basictest.matlab
-lib/dynare/contrib/jsonlab/jsonlab/examples/jsonlab_selftest.m
-lib/dynare/contrib/jsonlab/jsonlab/examples/jsonlab_selftest.matlab
-lib/dynare/contrib/jsonlab/jsonlab/examples/jsonlab_speedtest.m
-lib/dynare/contrib/jsonlab/jsonlab/jsonopt.m
-lib/dynare/contrib/jsonlab/jsonlab/loadjson.m
-lib/dynare/contrib/jsonlab/jsonlab/loadubjson.m
-lib/dynare/contrib/jsonlab/jsonlab/mergestruct.m
-lib/dynare/contrib/jsonlab/jsonlab/package.json
-lib/dynare/contrib/jsonlab/jsonlab/savejson.m
-lib/dynare/contrib/jsonlab/jsonlab/saveubjson.m
-lib/dynare/contrib/jsonlab/jsonlab/struct2jdata.m
-lib/dynare/contrib/jsonlab/jsonlab/varargin2struct.m
 lib/dynare/contrib/ms-sbvar/TZcode/MatlabFiles/a0asfun.m
 lib/dynare/contrib/ms-sbvar/TZcode/MatlabFiles/a0asgrad.m
 lib/dynare/contrib/ms-sbvar/TZcode/MatlabFiles/a0freefun.m
@@ -265,56 +239,152 @@ lib/dynare/contrib/ms-sbvar/TZcode/MatlabFiles/tran_b2a.m
 lib/dynare/contrib/ms-sbvar/TZcode/MatlabFiles/xydata.m
 lib/dynare/contrib/ms-sbvar/TZcode/MatlabFiles/zimpulse.m
 lib/dynare/contrib/ms-sbvar/TZcode/MatlabFiles/zroot.m
-lib/dynare/dynare++/dynare_simul.m
-lib/dynare/examples/Gali_2015.mod
-lib/dynare/examples/Gali_2015_PC_slope.m
-lib/dynare/examples/Gali_2015_prior_restrictions.m
-lib/dynare/examples/NK_baseline.mod
-lib/dynare/examples/NK_baseline_steadystate.m
-lib/dynare/examples/Occbin_example.mod
-lib/dynare/examples/Ramsey_Example.mod
-lib/dynare/examples/Ramsey_steady_file.mod
-lib/dynare/examples/Ramsey_steady_file_steadystate.m
-lib/dynare/examples/agtrend.mod
-lib/dynare/examples/bkk.mod
-lib/dynare/examples/dynare++/README.txt
-lib/dynare/examples/dynare++/example1.mod
-lib/dynare/examples/example1.mod
-lib/dynare/examples/example1_reporting.mod
-lib/dynare/examples/example2.mod
-lib/dynare/examples/example3.mod
-lib/dynare/examples/example3_steady_state_helper.m
-lib/dynare/examples/fs2000.mod
-lib/dynare/examples/fs2000_nonstationary.mod
-lib/dynare/examples/fsdat_simul.m
-lib/dynare/examples/ramst.mod
+lib/dynare/matlab/+backward_model/dynamic_model.m
+lib/dynare/matlab/+backward_model/forecast.m
+lib/dynare/matlab/+backward_model/initialize.m
+lib/dynare/matlab/+backward_model/inversion.m
+lib/dynare/matlab/+backward_model/irf.m
+lib/dynare/matlab/+backward_model/shock_decomposition.m
+lib/dynare/matlab/+backward_model/simul_linear_model.m
+lib/dynare/matlab/+backward_model/simul_nonlinear_model.m
+lib/dynare/matlab/+backward_model/simul_static_model.m
 lib/dynare/matlab/+bgp/write.m
+lib/dynare/matlab/+bvar/density.m
+lib/dynare/matlab/+bvar/forecast.m
+lib/dynare/matlab/+bvar/graph_init.m
+lib/dynare/matlab/+bvar/irf.m
+lib/dynare/matlab/+bvar/toolbox.m
+lib/dynare/matlab/+conditional_forecasts/get_shock_paths.m
+lib/dynare/matlab/+conditional_forecasts/plot.m
+lib/dynare/matlab/+conditional_forecasts/run.m
 lib/dynare/matlab/+equation/evaluate.m
 lib/dynare/matlab/+estimate/nls.m
+lib/dynare/matlab/+forecasts/graph.m
+lib/dynare/matlab/+forecasts/run.m
+lib/dynare/matlab/+forecasts/stochastic_classical.m
+lib/dynare/matlab/+gsa/Morris_Measure_Groups.m
+lib/dynare/matlab/+gsa/Sampling_Function_2.m
+lib/dynare/matlab/+gsa/boxplot.m
+lib/dynare/matlab/+gsa/cumplot.m
+lib/dynare/matlab/+gsa/log_transform.m
+lib/dynare/matlab/+gsa/map_calibration.m
+lib/dynare/matlab/+gsa/map_identification.m
+lib/dynare/matlab/+gsa/monte_carlo_filtering.m
+lib/dynare/matlab/+gsa/monte_carlo_filtering_analysis.m
+lib/dynare/matlab/+gsa/monte_carlo_moments.m
+lib/dynare/matlab/+gsa/prior_draw.m
+lib/dynare/matlab/+gsa/priorcdf.m
+lib/dynare/matlab/+gsa/reduced_form_mapping.m
+lib/dynare/matlab/+gsa/reduced_form_screening.m
+lib/dynare/matlab/+gsa/run.m
+lib/dynare/matlab/+gsa/scatter_analysis.m
+lib/dynare/matlab/+gsa/scatter_mcf.m
+lib/dynare/matlab/+gsa/scatter_plots.m
+lib/dynare/matlab/+gsa/set_shocks_param.m
+lib/dynare/matlab/+gsa/skewness.m
+lib/dynare/matlab/+gsa/smirnov_test.m
+lib/dynare/matlab/+gsa/stability_mapping.m
+lib/dynare/matlab/+gsa/stability_mapping_bivariate.m
+lib/dynare/matlab/+gsa/stability_mapping_univariate.m
+lib/dynare/matlab/+gsa/standardize_columns.m
+lib/dynare/matlab/+gsa/tcrit.m
+lib/dynare/matlab/+gsa/teff.m
+lib/dynare/matlab/+gsa/th_moments.m
 lib/dynare/matlab/+gui/+perfect_foresight/run.m
 lib/dynare/matlab/+gui/+stochastic-simulation/read.m
-lib/dynare/matlab/+mom/check_plot.m
-lib/dynare/matlab/+mom/data_moments.m
+lib/dynare/matlab/+heterogeneity/check_steady_state_input.m
+lib/dynare/matlab/+heterogeneity/compute_steady_state.m
+lib/dynare/matlab/+heterogeneity/load_steady_state.m
+lib/dynare/matlab/+heterogeneity/plot_irfs.m
+lib/dynare/matlab/+heterogeneity/plot_simulation.m
+lib/dynare/matlab/+heterogeneity/simulate.m
+lib/dynare/matlab/+heterogeneity/simulate_irfs.m
+lib/dynare/matlab/+heterogeneity/simulate_news_shocks.m
+lib/dynare/matlab/+heterogeneity/simulate_stochastic_shocks.m
+lib/dynare/matlab/+heterogeneity/solve.m
+lib/dynare/matlab/+identification/analysis.m
+lib/dynare/matlab/+identification/bruteforce.m
+lib/dynare/matlab/+identification/checks.m
+lib/dynare/matlab/+identification/checks_via_subsets.m
+lib/dynare/matlab/+identification/cosn.m
+lib/dynare/matlab/+identification/display.m
+lib/dynare/matlab/+identification/fjaco.m
+lib/dynare/matlab/+identification/get_jacobians.m
+lib/dynare/matlab/+identification/get_minimal_state_representation.m
+lib/dynare/matlab/+identification/get_perturbation_params_derivs.m
+lib/dynare/matlab/+identification/get_perturbation_params_derivs_numerical_objective.m
+lib/dynare/matlab/+identification/hessian_sparse.m
+lib/dynare/matlab/+identification/legacy_dynamic_g1.m
+lib/dynare/matlab/+identification/legacy_dynamic_g1p.m
+lib/dynare/matlab/+identification/legacy_dynamic_g1pp.m
+lib/dynare/matlab/+identification/legacy_dynamic_g2.m
+lib/dynare/matlab/+identification/legacy_dynamic_g2p.m
+lib/dynare/matlab/+identification/legacy_dynamic_g3.m
+lib/dynare/matlab/+identification/legacy_dynamic_g3p.m
+lib/dynare/matlab/+identification/legacy_dynamic_g4.m
+lib/dynare/matlab/+identification/legacy_idx.m
+lib/dynare/matlab/+identification/legacy_static_g1p.m
+lib/dynare/matlab/+identification/numerical_objective.m
+lib/dynare/matlab/+identification/plot.m
+lib/dynare/matlab/+identification/run.m
+lib/dynare/matlab/+identification/simulated_moment_uncertainty.m
+lib/dynare/matlab/+identification/unfold_g3.m
+lib/dynare/matlab/+identification/unfold_g4.m
+lib/dynare/matlab/+identification/vnorm.m
+lib/dynare/matlab/+mom/Jtest.m
+lib/dynare/matlab/+mom/check_irf_matching_file.m
+lib/dynare/matlab/+mom/default_option_mom_values.m
+lib/dynare/matlab/+mom/display_comparison_moments_irfs.m
+lib/dynare/matlab/+mom/get_data_moments.m
+lib/dynare/matlab/+mom/graph_comparison_irfs.m
+lib/dynare/matlab/+mom/matched_irfs_blocks.m
+lib/dynare/matlab/+mom/matched_moments_block.m
+lib/dynare/matlab/+mom/mode_compute_gmm_smm.m
+lib/dynare/matlab/+mom/mode_compute_irf_matching.m
 lib/dynare/matlab/+mom/objective_function.m
 lib/dynare/matlab/+mom/optimal_weighting_matrix.m
+lib/dynare/matlab/+mom/print_info_on_estimation_settings.m
 lib/dynare/matlab/+mom/run.m
+lib/dynare/matlab/+mom/set_correct_bounds_for_stderr_corr.m
 lib/dynare/matlab/+mom/standard_errors.m
+lib/dynare/matlab/+mom/transform_prior_to_laplace_prior.m
+lib/dynare/matlab/+occbin/+ppf/compute_weights.m
+lib/dynare/matlab/+occbin/+ppf/conditional_data_density.m
+lib/dynare/matlab/+occbin/+ppf/draw_particles.m
+lib/dynare/matlab/+occbin/+ppf/engine.m
+lib/dynare/matlab/+occbin/+ppf/graphs.m
+lib/dynare/matlab/+occbin/+ppf/joint_density.m
+lib/dynare/matlab/+occbin/+ppf/marginal_density.m
+lib/dynare/matlab/+occbin/+ppf/mcmc_draws.m
+lib/dynare/matlab/+occbin/+ppf/simulated_density.m
+lib/dynare/matlab/+occbin/+ppf/state_importance_sampling.m
+lib/dynare/matlab/+occbin/+ppf/state_priordens.m
 lib/dynare/matlab/+occbin/DSGE_smoother.m
 lib/dynare/matlab/+occbin/IVF_core.m
 lib/dynare/matlab/+occbin/IVF_posterior.m
+lib/dynare/matlab/+occbin/backward_map_regime.m
 lib/dynare/matlab/+occbin/check_regimes.m
+lib/dynare/matlab/+occbin/cost_function.m
 lib/dynare/matlab/+occbin/dynare_resolve.m
+lib/dynare/matlab/+occbin/findmin.m
+lib/dynare/matlab/+occbin/forecast.m
 lib/dynare/matlab/+occbin/get_deriv.m
 lib/dynare/matlab/+occbin/get_pq.m
 lib/dynare/matlab/+occbin/graph.m
+lib/dynare/matlab/+occbin/irf.m
 lib/dynare/matlab/+occbin/kalman_update_algo_1.m
 lib/dynare/matlab/+occbin/kalman_update_algo_3.m
+lib/dynare/matlab/+occbin/kalman_update_engine.m
 lib/dynare/matlab/+occbin/make_chart.m
 lib/dynare/matlab/+occbin/map_regime.m
 lib/dynare/matlab/+occbin/match_function.m
 lib/dynare/matlab/+occbin/mkdata.m
 lib/dynare/matlab/+occbin/mkdatap_anticipated_2constraints_dyn.m
 lib/dynare/matlab/+occbin/mkdatap_anticipated_dyn.m
+lib/dynare/matlab/+occbin/pkf_conditional_density.m
+lib/dynare/matlab/+occbin/plot_irfs.m
+lib/dynare/matlab/+occbin/plot_regimes.m
+lib/dynare/matlab/+occbin/posterior_importance_sampling.m
 lib/dynare/matlab/+occbin/set_default_options.m
 lib/dynare/matlab/+occbin/set_option.m
 lib/dynare/matlab/+occbin/setup.m
@@ -322,8 +392,14 @@ lib/dynare/matlab/+occbin/shock_decomposition.m
 lib/dynare/matlab/+occbin/solve_one_constraint.m
 lib/dynare/matlab/+occbin/solve_two_constraints.m
 lib/dynare/matlab/+occbin/solver.m
+lib/dynare/matlab/+occbin/squeeze_shock_decomposition.m
 lib/dynare/matlab/+occbin/unpack_simulations.m
 lib/dynare/matlab/+occbin/write_regimes_to_xls.m
+lib/dynare/matlab/+osr/get_variance_of_endogenous_variables.m
+lib/dynare/matlab/+osr/objective.m
+lib/dynare/matlab/+osr/run.m
+lib/dynare/matlab/+pac/+bgp/get.m
+lib/dynare/matlab/+pac/+bgp/set.m
 lib/dynare/matlab/+pac/+estimate/init.m
 lib/dynare/matlab/+pac/+estimate/iterative_ols.m
 lib/dynare/matlab/+pac/+estimate/nls.m
@@ -334,11 +410,36 @@ lib/dynare/matlab/+pac/+update/parameters.m
 lib/dynare/matlab/+pac/check.m
 lib/dynare/matlab/+pac/initialize.m
 lib/dynare/matlab/+pac/print.m
+lib/dynare/matlab/+pruned_SS/Q6_plication.m
+lib/dynare/matlab/+pruned_SS/allVL1.m
+lib/dynare/matlab/+pruned_SS/bivmom.m
+lib/dynare/matlab/+pruned_SS/commutation.m
+lib/dynare/matlab/+pruned_SS/duplication.m
+lib/dynare/matlab/+pruned_SS/prodmom.m
+lib/dynare/matlab/+pruned_SS/prodmom_deriv.m
+lib/dynare/matlab/+pruned_SS/pruned_state_space_system.m
+lib/dynare/matlab/+pruned_SS/quadruplication.m
+lib/dynare/matlab/+pruned_SS/uperm.m
 lib/dynare/matlab/+var_expectation/initialize.m
 lib/dynare/matlab/+var_expectation/print.m
 lib/dynare/matlab/+var_expectation/update.m
 lib/dynare/matlab/+var_expectation/update_parameters.m
-lib/dynare/matlab/AHessian.m
+lib/dynare/matlab/+wait_bar/close.m
+lib/dynare/matlab/+wait_bar/multi.m
+lib/dynare/matlab/+wait_bar/run.m
+lib/dynare/matlab/@dprior/admissible.m
+lib/dynare/matlab/@dprior/densities.m
+lib/dynare/matlab/@dprior/density.m
+lib/dynare/matlab/@dprior/dprior.m
+lib/dynare/matlab/@dprior/draw.m
+lib/dynare/matlab/@dprior/draws.m
+lib/dynare/matlab/@dprior/length.m
+lib/dynare/matlab/@dprior/mean.m
+lib/dynare/matlab/@dprior/median.m
+lib/dynare/matlab/@dprior/mode.m
+lib/dynare/matlab/@dprior/moments.m
+lib/dynare/matlab/@dprior/subsref.m
+lib/dynare/matlab/@dprior/variance.m
 lib/dynare/matlab/AIM/README.txt
 lib/dynare/matlab/AIM/SPAimerr.m
 lib/dynare/matlab/AIM/SPAmalg.m
@@ -350,145 +451,91 @@ lib/dynare/matlab/AIM/SPNumeric_shift.m
 lib/dynare/matlab/AIM/SPObstruct.m
 lib/dynare/matlab/AIM/SPReduced_form.m
 lib/dynare/matlab/AIM/SPShiftright.m
-lib/dynare/matlab/AIM/dynAIMsolver1.m
-lib/dynare/matlab/AIM_first_order_solver.m
 lib/dynare/matlab/CheckPath.m
-lib/dynare/matlab/CutSample.m
-lib/dynare/matlab/DsgeSmoother.m
-lib/dynare/matlab/GetAllPosteriorDraws.m
-lib/dynare/matlab/GetOneDraw.m
-lib/dynare/matlab/GetPosteriorMeanVariance.m
-lib/dynare/matlab/GetPosteriorParametersStatistics.m
 lib/dynare/matlab/MakeAllFigures.m
-lib/dynare/matlab/PlotPosteriorDistributions.m
-lib/dynare/matlab/PosteriorIRF.m
-lib/dynare/matlab/PosteriorIRF_core1.m
-lib/dynare/matlab/PosteriorIRF_core2.m
-lib/dynare/matlab/Q6_plication.m
-lib/dynare/matlab/ReshapeMatFiles.m
-lib/dynare/matlab/TaRB_optimizer_wrapper.m
 lib/dynare/matlab/Tracing.m
-lib/dynare/matlab/UnivariateSpectralDensity.m
-lib/dynare/matlab/WriteShockDecomp2Excel.m
 lib/dynare/matlab/accessors/get_irf.m
 lib/dynare/matlab/accessors/get_mean.m
+lib/dynare/matlab/accessors/get_mean_no_globals.m
 lib/dynare/matlab/accessors/get_param_by_name.m
+lib/dynare/matlab/accessors/get_parameter_set_name.m
 lib/dynare/matlab/accessors/get_posterior_covariance.m
 lib/dynare/matlab/accessors/get_posterior_irf.m
 lib/dynare/matlab/accessors/get_posterior_timeseries.m
+lib/dynare/matlab/accessors/get_shock_skew_by_name.m
 lib/dynare/matlab/accessors/get_shock_stderr_by_name.m
 lib/dynare/matlab/accessors/get_smooth.m
 lib/dynare/matlab/accessors/get_update.m
 lib/dynare/matlab/accessors/set_param_value.m
+lib/dynare/matlab/accessors/set_param_value_locally.m
*** 1909 LINES SKIPPED ***