diff --git a/RELEASES.md b/RELEASES.md
index f99b7f92..34189ef1 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -39,6 +39,11 @@ Core
within the given context, and proper precautions are taken (as many
templates already do today).
+Rust
+----
+- Version bump from 1.42.0 to 1.48.0 now that intra-doc links has been
+ stabalized.
+
Miscellaneous
-------------
- `build-aux/progtest-runner` will now deterministically concatenate files
diff --git a/tamer/build-aux/intra_rustdoc_links_check.rs b/tamer/build-aux/intra_rustdoc_links_check.rs
deleted file mode 100644
index 53c15e1d..00000000
--- a/tamer/build-aux/intra_rustdoc_links_check.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-// Feature check for `test`
-//
-// Copyright (C) 2014-2020 Ryan Specialty Group, LLC.
-//
-// This file is part of TAME.
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see .
-
-// As of the time of writing, this feature is unstable and can only be
-// enabled in nightly. This file is intended to be used in the `configure`
-// script to determine whether a nightly version of Rust must be used to
-// build documentation.
-#![feature(intra_rustdoc_links)]
-
diff --git a/tamer/configure.ac b/tamer/configure.ac
index 8295505e..c936e070 100644
--- a/tamer/configure.ac
+++ b/tamer/configure.ac
@@ -45,7 +45,7 @@ AC_CHECK_PROGS(CARGO, [cargo])
test -n "$CARGO" || AC_MSG_ERROR([cargo not found])
-rustc_ver_req=1.42.0
+rustc_ver_req=1.48.0
AC_CHECK_PROGS(RUSTC, [rustc])
AC_MSG_CHECKING([rustc version >= $rustc_ver_req])
@@ -58,15 +58,9 @@ AX_COMPARE_VERSION([$rustc_version], [ge], [$rustc_ver_req],
AC_ARG_VAR([CARGO_BUILD_FLAGS],
[Flags to be passed to `cargo build' when invoked via Make])
-# The `intra_rustdoc_links` feature is required for building
-# documentation. If unavailable, then it's still an unstable feature and
-# we'll need to use nightly. We don't check for nightly here, though---if
-# it's missing, then cargo will tell the user what to do.
-AC_MSG_CHECKING([`intra_rustdoc_links_check` feature support])
-AS_IF(["$RUSTC" --crate-type lib build_aux/intra_rustdoc_links_check.rs &>/dev/null],
- [AC_MSG_RESULT(available)],
- [AC_MSG_RESULT([no (nightly required)])
- AC_SUBST([CARGO_DOC_FLAGS], [+nightly])])
+# All currently-used doc features are stable (this used to be used for
+# intra-doc links)
+AC_SUBST([CARGO_DOC_FLAGS], [])
# The `test` feature is required for benchmarking. If unavailable, then
# it's still an unstable feature and we'll need to use nightly. We don't
diff --git a/tamer/src/ir/legacyir.rs b/tamer/src/ir/legacyir.rs
index 1d23f3f2..63c9ed61 100644
--- a/tamer/src/ir/legacyir.rs
+++ b/tamer/src/ir/legacyir.rs
@@ -224,7 +224,7 @@ impl TryFrom<&[u8]> for SymType {
/// Determine symbol type from source `preproc:sym/@type`.
///
/// This raises source `xmlo` data into this IR.
- /// See [`crate::obj::xmlo::reader`].
+ /// See [`crate::obj::xmlo::XmloReader`].
fn try_from(value: &[u8]) -> Result {
match value {
b"cgen" => Ok(SymType::Cgen),
@@ -289,7 +289,7 @@ impl TryFrom<&[u8]> for SymDtype {
/// Determine data type from source `preproc:sym/@dtype`.
///
/// This raises source `xmlo` data into this IR.
- /// See [`crate::obj::xmlo::reader`].
+ /// See [`crate::obj::xmlo::XmloReader`].
fn try_from(value: &[u8]) -> Result {
match value {
b"boolean" => Ok(SymDtype::Boolean),
diff --git a/tamer/src/ir/mod.rs b/tamer/src/ir/mod.rs
index 3b947030..78009ca9 100644
--- a/tamer/src/ir/mod.rs
+++ b/tamer/src/ir/mod.rs
@@ -65,10 +65,10 @@
//! IRs are progressively _lowered_ to other IRs that are closer to the
//! final representation emitted by the compiler ("lower"-level).
//!
-//! - [`xmlo::reader`](crate::obj::xmlo::reader) produces
+//! - [`xmlo::XmloReader`](crate::obj::xmlo::XmloReader) produces
//! [`XmloEvent`](crate::obj::xmlo::XmloEvent)s containing
//! [`legacyir`].
-//! - [`xmlo::asg_builder`](crate::obj::xmlo::asg_builder) immediately lowers
+//! - [`xmlo::AsgBuilder`](crate::obj::xmlo::AsgBuilder) immediately lowers
//! those into [`asg`].
pub mod asg;
diff --git a/tamer/src/lib.rs b/tamer/src/lib.rs
index 569d74de..f0159a5f 100644
--- a/tamer/src/lib.rs
+++ b/tamer/src/lib.rs
@@ -19,6 +19,9 @@
//! An incremental rewrite of TAME in Rust.
+// We build docs for private items
+#![allow(rustdoc::private_intra_doc_links)]
+
pub mod global;
#[macro_use]