summaryrefslogtreecommitdiff
path: root/dev-lang
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-08-31 03:04:48 -0500
committerroot <root@alpha.trunkmasters.com>2026-08-31 03:04:48 -0500
commit8dd15182c470607a18f884956452d134ac91753a (patch)
treeb1d3dc36c14f22d6f88defa59666328381dbe0d9 /dev-lang
parentacb1593a8b3f287b06b8e2073eff6a70f02e2c4f (diff)
downloadbaldeagleos-repo-8dd15182c470607a18f884956452d134ac91753a.tar.gz
baldeagleos-repo-8dd15182c470607a18f884956452d134ac91753a.tar.xz
baldeagleos-repo-8dd15182c470607a18f884956452d134ac91753a.zip
Adding metadata
Diffstat (limited to 'dev-lang')
-rw-r--r--dev-lang/R/R-4.6.1.ebuild2
-rw-r--r--dev-lang/elixir/Manifest3
-rw-r--r--dev-lang/elixir/elixir-1.16.3-r2.ebuild43
-rw-r--r--dev-lang/elixir/elixir-1.17.3-r2.ebuild43
-rw-r--r--dev-lang/elixir/elixir-1.18.5.ebuild42
-rw-r--r--dev-lang/elixir/elixir-1.19.6.ebuild46
-rw-r--r--dev-lang/elixir/elixir-1.20.4.ebuild43
-rw-r--r--dev-lang/elixir/files/elixir-1.17.3-CVE-2026-75758-inspect-recursion.patch175
8 files changed, 396 insertions, 1 deletions
diff --git a/dev-lang/R/R-4.6.1.ebuild b/dev-lang/R/R-4.6.1.ebuild
index 1fab12252881..070f6c015816 100644
--- a/dev-lang/R/R-4.6.1.ebuild
+++ b/dev-lang/R/R-4.6.1.ebuild
@@ -17,7 +17,7 @@ SRC_URI="
LICENSE="|| ( GPL-2 GPL-3 ) LGPL-2.1"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~hppa ~loong ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="amd64 arm64 ~hppa ~loong ~sparc ~x86 ~arm64-macos ~x64-macos"
IUSE="cairo doc icu java jpeg +libdeflate lto minimal nls openmp perl png prefix profile readline test tiff tk X"
REQUIRED_USE="
diff --git a/dev-lang/elixir/Manifest b/dev-lang/elixir/Manifest
index 8e79110e223d..2ee8c7278181 100644
--- a/dev-lang/elixir/Manifest
+++ b/dev-lang/elixir/Manifest
@@ -1,6 +1,9 @@
DIST elixir-1.16.3.tar.gz 3360376 BLAKE2B ac6cdc16f193560e18338bd3e45a4f88c7d4398969336062551477dfdafaab8ada60ae64c856647b36967205849427413938da87f746bd52d03d78e141ba5a03 SHA512 1511fb78bdcc50850cbf91007ed11c6a89e947d0a743c1e9ed30e1c93c1b47b5377fced17eeb66ac511d4f151d2e00ef2ecc6fb425d0d4afe2451be41a6ba6ee
DIST elixir-1.17.3.tar.gz 3256595 BLAKE2B c016857f74d65de5afcef6d1284b76fc529a542e5cd0dded73701cbdad93f281529a545af1c5a905cb116a3028472703acfdc21ae070f9255bdfd6d5c09bf7a0 SHA512 084514d1362b52e85c0b4d92b8d18c6d2e9fddb4e4eaf4467f8b1c0985f9ceca1b74a0478581d91164935ae0f49610771860c674e080137e52aadc65b666911b
DIST elixir-1.18.4.tar.gz 3397219 BLAKE2B 9c1052eaa3e17366c6f42296c1e9ae6cc9a6419dd9916d9badcdcf7f999d2e6cbbed840261f86e7d8bf3839d5a1d4bff9633aa87264d03bc08ca8c50fcb4afac SHA512 14030fbfaf7dcd88cf60d1cee52a6316e2298c8dcf7b41d758456c01e98f45499d8590beab3ac8683d613ddb17f9c92988c76081ab9f316b9c890c482a26c8eb
+DIST elixir-1.18.5.tar.gz 3398558 BLAKE2B 277f0bf827892e64409e99d599431fbe98ada01ccb5b56e9c7e8d5c5ffa4260a932a5e4e73b1bc6366b9df40d9d766e5ee62f7568b853d41d0fae3c947487d7c SHA512 38101c32689fc7021d0b3e73331f8aacfb037c30edafa87eb28848699f414d3525d87a74c9173d6002354846e86cdfe71516066ea00da553418d294a26c8b1ee
DIST elixir-1.19.5.tar.gz 3593898 BLAKE2B 86ca979ff6f698c581f864652fe8414c69e30d17295b3e20c5c625b75f213f7af77225c79e003c9ef6c74ad21b909942fdcc885977401d46a8a5a3b86765f355 SHA512 6bdc83490fb44daead69f86dee08f25a3c0c23bc46be6f62e3603777f3ffa6be4334904689782b0990640d50385dc90ec1d16cbfaf5691ec405ee2c88ff3c4ac
+DIST elixir-1.19.6.tar.gz 3593459 BLAKE2B 296c7df14174d7893401cba8335ac6029ad45263ac680ba30d2032b7adfc32af5a3d25dd0de310a28a0406fe7bd3ea9f1a001dead0acc5a2551961b3146ee85f SHA512 fc1fcfe8833356c0c15e0e1eba73c56ce1f58f29cc12de1324c2f3567915ce1811226a334798ca6ec76a48c643de1c6a9aba765232035c3a9c77b60f5aaee3a2
DIST elixir-1.20.1.tar.gz 3675171 BLAKE2B b510522c34d1892dd34b452bf7e771c4a73b31280b42634422b7471aa44ff34432fc054a125b4258e1d365fb3080daa3d5461ab537aa993a3cd7ca6bdb555834 SHA512 7e4f4342f154f5c6bce80247a7ca66ed1b538df977183295c8350339ffd9173cc5be3fc8902d07bad27d4433a9b47b5345180eb9fe72e68ae87824da55a82012
DIST elixir-1.20.2.tar.gz 3678960 BLAKE2B 7373e2763526cbc6e4986a27c2ac8ce8b98cb0683a99d54227dc03dab847647f24ba4e4bbd546e87ab0155ae5b5fea53ec641ad55da1b834301582e7c05a32c4 SHA512 13c5d6df99e83ac675df1b68d7b6b7ec05bf63303674058e26e170ddc506c84f233abee2175d2d0e4d7bc27238cc7b576b02dd766bb3ac595ca368f566e145ae
+DIST elixir-1.20.4.tar.gz 3685297 BLAKE2B 674f7967844d36b0831cb2e6ae3bfa6f296bf285db52c65fa6f818313d524a163c2ce9ee743064a759af5c38013caf224ec54e71f8925aa3fbf76f2ed70610f9 SHA512 df7d86214553e43a7bddfb8611a6ee68eb37511f17872ce2c14f796eca9846eaf875fb050f0faeef4fa42bd352e780b75ec0781a5d4aab3a4b6378dd067fa17b
diff --git a/dev-lang/elixir/elixir-1.16.3-r2.ebuild b/dev-lang/elixir/elixir-1.16.3-r2.ebuild
new file mode 100644
index 000000000000..75ff61c74908
--- /dev/null
+++ b/dev-lang/elixir/elixir-1.16.3-r2.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Elixir programming language"
+HOMEPAGE="https://elixir-lang.org"
+SRC_URI="https://github.com/elixir-lang/elixir/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0 ErlPL-1.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~riscv ~sparc ~x86"
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+# https://hexdocs.pm/elixir/compatibility-and-deprecations.html#between-elixir-and-erlang-otp
+DEPEND="
+ >=dev-lang/erlang-24:0=[ssl]
+ <dev-lang/erlang-27
+"
+# 'mix' tool collides with sci-biology/phylip, bug #537514
+RDEPEND="${DEPEND}
+ !!sci-biology/phylip
+"
+DEPEND+="
+ test? ( dev-vcs/git )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.9.1-disable-network-tests.patch
+ "${FILESDIR}"/${PN}-1.10.3-no-Q.patch
+ "${FILESDIR}"/${PN}-1.10.3-epmd-daemon.patch
+ "${FILESDIR}"/${PN}-1.18.4-Cap-width-in-strftime-to-1024-characters.patch
+ "${FILESDIR}"/${PN}-1.18.4-Limit-version-numbers-to-14-bytes.patch
+ "${FILESDIR}"/${PN}-1.18.4-Validate-paths-and-files-when-extracting-archives.patch
+ "${FILESDIR}"/${PN}-1.17.3-CVE-2026-75758-inspect-recursion.patch
+)
+
+src_install() {
+ emake DESTDIR="${D}" LIBDIR="$(get_libdir)" PREFIX="${EPREFIX}/usr" install
+ dodoc README.md CHANGELOG.md CODE_OF_CONDUCT.md
+}
diff --git a/dev-lang/elixir/elixir-1.17.3-r2.ebuild b/dev-lang/elixir/elixir-1.17.3-r2.ebuild
new file mode 100644
index 000000000000..86502dcc48c1
--- /dev/null
+++ b/dev-lang/elixir/elixir-1.17.3-r2.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Elixir programming language"
+HOMEPAGE="https://elixir-lang.org"
+SRC_URI="https://github.com/elixir-lang/elixir/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0 ErlPL-1.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~riscv ~sparc ~x86"
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+# https://hexdocs.pm/elixir/compatibility-and-deprecations.html#between-elixir-and-erlang-otp
+DEPEND="
+ >=dev-lang/erlang-25:0=[ssl]
+ <dev-lang/erlang-28
+"
+# 'mix' tool collides with sci-biology/phylip, bug #537514
+RDEPEND="${DEPEND}
+ !!sci-biology/phylip
+"
+DEPEND+="
+ test? ( dev-vcs/git )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.9.1-disable-network-tests.patch
+ "${FILESDIR}"/${PN}-1.10.3-no-Q.patch
+ "${FILESDIR}"/${PN}-1.10.3-epmd-daemon.patch
+ "${FILESDIR}"/${PN}-1.18.4-Cap-width-in-strftime-to-1024-characters.patch
+ "${FILESDIR}"/${PN}-1.18.4-Limit-version-numbers-to-14-bytes.patch
+ "${FILESDIR}"/${PN}-1.18.4-Validate-paths-and-files-when-extracting-archives.patch
+ "${FILESDIR}"/${PN}-1.17.3-CVE-2026-75758-inspect-recursion.patch
+)
+
+src_install() {
+ emake DESTDIR="${D}" LIBDIR="$(get_libdir)" PREFIX="${EPREFIX}/usr" install
+ dodoc README.md CHANGELOG.md CODE_OF_CONDUCT.md
+}
diff --git a/dev-lang/elixir/elixir-1.18.5.ebuild b/dev-lang/elixir/elixir-1.18.5.ebuild
new file mode 100644
index 000000000000..bec1145ea19e
--- /dev/null
+++ b/dev-lang/elixir/elixir-1.18.5.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Elixir programming language"
+HOMEPAGE="https://elixir-lang.org"
+SRC_URI="https://github.com/elixir-lang/elixir/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0 ErlPL-1.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~riscv ~sparc ~x86"
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+# https://hexdocs.pm/elixir/compatibility-and-deprecations.html#between-elixir-and-erlang-otp
+DEPEND="
+ >=dev-lang/erlang-25:0=[ssl]
+ <dev-lang/erlang-29
+"
+# 'mix' tool collides with sci-biology/phylip, bug #537514
+RDEPEND="${DEPEND}
+ !!sci-biology/phylip
+"
+DEPEND+="
+ test? ( dev-vcs/git )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.9.1-disable-network-tests.patch
+ "${FILESDIR}"/${PN}-1.10.3-no-Q.patch
+ "${FILESDIR}"/${PN}-1.10.3-epmd-daemon.patch
+ "${FILESDIR}"/${PN}-1.18.4-Cap-width-in-strftime-to-1024-characters.patch
+ "${FILESDIR}"/${PN}-1.18.4-Limit-version-numbers-to-14-bytes.patch
+ "${FILESDIR}"/${PN}-1.18.4-Validate-paths-and-files-when-extracting-archives.patch
+)
+
+src_install() {
+ emake DESTDIR="${D}" LIBDIR="$(get_libdir)" PREFIX="${EPREFIX}/usr" install
+ dodoc README.md CHANGELOG.md CODE_OF_CONDUCT.md
+}
diff --git a/dev-lang/elixir/elixir-1.19.6.ebuild b/dev-lang/elixir/elixir-1.19.6.ebuild
new file mode 100644
index 000000000000..22bedc01a7d7
--- /dev/null
+++ b/dev-lang/elixir/elixir-1.19.6.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Elixir programming language"
+HOMEPAGE="https://elixir-lang.org"
+SRC_URI="https://github.com/elixir-lang/elixir/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0 ErlPL-1.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~riscv ~sparc ~x86"
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+# https://hexdocs.pm/elixir/compatibility-and-deprecations.html#between-elixir-and-erlang-otp
+DEPEND="
+ >=dev-lang/erlang-26:0=[ssl]
+ <dev-lang/erlang-29
+"
+# 'mix' tool collides with sci-biology/phylip, bug #537514
+RDEPEND="${DEPEND}
+ !!sci-biology/phylip
+"
+DEPEND+="
+ test? ( dev-vcs/git )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.9.1-disable-network-tests.patch
+ "${FILESDIR}"/${PN}-1.10.3-no-Q.patch
+ "${FILESDIR}"/${PN}-1.10.3-epmd-daemon.patch
+ "${FILESDIR}"/${PN}-1.19.5-Cap-width-in-strftime-to-1024-characters.patch
+ "${FILESDIR}"/${PN}-1.19.5-Limit-version-numbers-to-14-bytes.patch
+ "${FILESDIR}"/${PN}-1.19.5-Validate-paths-and-files-when-extracting-archives.patch
+)
+
+src_install() {
+ emake DESTDIR="${D}" LIBDIR="$(get_libdir)" PREFIX="${EPREFIX}/usr" install
+ dodoc README.md CHANGELOG.md CODE_OF_CONDUCT.md
+}
+
+# Note on tests: Needs to be ran with proper isolation when epmd is already running on the host,
+# say with ebuild launched by root, or emerge
+# See: https://github.com/elixir-lang/elixir/issues/14889#issuecomment-3539477959
diff --git a/dev-lang/elixir/elixir-1.20.4.ebuild b/dev-lang/elixir/elixir-1.20.4.ebuild
new file mode 100644
index 000000000000..591ae0075e90
--- /dev/null
+++ b/dev-lang/elixir/elixir-1.20.4.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+DESCRIPTION="Elixir programming language"
+HOMEPAGE="https://elixir-lang.org"
+SRC_URI="https://github.com/elixir-lang/elixir/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0 ErlPL-1.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~riscv ~sparc ~x86"
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+# https://hexdocs.pm/elixir/compatibility-and-deprecations.html#between-elixir-and-erlang-otp
+DEPEND="
+ >=dev-lang/erlang-27:0=[ssl]
+ <dev-lang/erlang-30
+"
+# 'mix' tool collides with sci-biology/phylip, bug #537514
+RDEPEND="${DEPEND}
+ !!sci-biology/phylip
+"
+DEPEND+="
+ test? ( dev-vcs/git )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.9.1-disable-network-tests.patch
+ "${FILESDIR}"/${PN}-1.10.3-no-Q.patch
+ "${FILESDIR}"/${PN}-1.10.3-epmd-daemon.patch
+)
+
+src_install() {
+ emake DESTDIR="${D}" LIBDIR="$(get_libdir)" PREFIX="${EPREFIX}/usr" install
+ dodoc README.md CHANGELOG.md CODE_OF_CONDUCT.md
+}
+
+# Note on tests: Needs to be ran with proper isolation when epmd is already running on the host,
+# say with ebuild launched by root, or emerge
+# See: https://github.com/elixir-lang/elixir/issues/14889#issuecomment-3539477959
diff --git a/dev-lang/elixir/files/elixir-1.17.3-CVE-2026-75758-inspect-recursion.patch b/dev-lang/elixir/files/elixir-1.17.3-CVE-2026-75758-inspect-recursion.patch
new file mode 100644
index 000000000000..230afbb52aac
--- /dev/null
+++ b/dev-lang/elixir/files/elixir-1.17.3-CVE-2026-75758-inspect-recursion.patch
@@ -0,0 +1,175 @@
+From 85338df6fc08facfda46b32f5abb3a914d73c7b9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
+Date: Tue, 25 Aug 2026 11:27:54 +0200
+Subject: [PATCH] Fix recursion on charlist error path
+
+---
+ lib/elixir/lib/inspect.ex | 30 ++++++++++++++++++++-----
+ lib/elixir/lib/inspect/algebra.ex | 4 ++--
+ lib/elixir/lib/list.ex | 4 ++--
+ lib/elixir/test/elixir/inspect_test.exs | 17 +++++++++++++-
+ lib/elixir/test/elixir/list_test.exs | 12 ++++++++++
+ 5 files changed, 57 insertions(+), 10 deletions(-)
+
+diff --git a/lib/elixir/lib/inspect.ex b/lib/elixir/lib/inspect.ex
+index 637bca8a6..d5b876fcf 100644
+--- a/lib/elixir/lib/inspect.ex
++++ b/lib/elixir/lib/inspect.ex
+@@ -264,13 +264,20 @@ def inspect(term, opts) do
+ close = color("]", :list, opts)
+
+ cond do
+- lists == :as_charlists or (lists == :infer and List.ascii_printable?(term, printable_limit)) ->
+- inspected =
+- case Identifier.escape(IO.chardata_to_string(term), ?", printable_limit) do
+- {escaped, ""} -> [?~, ?c, ?", escaped, ?"]
+- {escaped, _} -> [?~, ?c, ?", escaped, ?", " ++ ..."]
++ (lists == :as_charlists and unicode_list?(term, printable_limit)) or
++ (lists == :infer and List.ascii_printable?(term, printable_limit)) ->
++ {split, tail} =
++ if is_integer(printable_limit) do
++ case Enum.split(term, printable_limit) do
++ {split, []} -> {split, []}
++ {split, _} -> {split, " ++ ..."}
++ end
++ else
++ {term, []}
+ end
+
++ {escaped, _} = Identifier.escape(IO.chardata_to_string(split), ?")
++ inspected = [?~, ?c, ?", escaped, ?" | tail]
+ color(IO.iodata_to_binary(inspected), :charlist, opts)
+
+ keyword?(term) ->
+@@ -281,6 +288,19 @@ def inspect(term, opts) do
+ end
+ end
+
++ defp unicode_list?(_, 0), do: true
++
++ defp unicode_list?([char | rest], counter)
++ when char in 0..0xD7FF or char in 0xE000..0x10FFFF,
++ do: unicode_list?(rest, decrement(counter))
++
++ defp unicode_list?([], _counter), do: true
++ defp unicode_list?(_, _counter), do: false
++
++ @compile {:inline, decrement: 1}
++ defp decrement(:infinity), do: :infinity
++ defp decrement(counter), do: counter - 1
++
+ @doc false
+ def keyword({key, value}, opts) do
+ key = color(Macro.inspect_atom(:key, key), :atom, opts)
+diff --git a/lib/elixir/lib/inspect/algebra.ex b/lib/elixir/lib/inspect/algebra.ex
+index 5e213b377..941aa5525 100644
+--- a/lib/elixir/lib/inspect/algebra.ex
++++ b/lib/elixir/lib/inspect/algebra.ex
+@@ -17,8 +17,8 @@ defmodule Inspect.Opts do
+ is `:decimal` and if it is printable, otherwise in bit syntax. See
+ `String.printable?/1` to learn when a string is printable.
+
+- * `:charlists` - when `:as_charlists` all lists will be printed as charlists,
+- non-printable elements will be escaped.
++ * `:charlists` - when `:as_charlists` all charlists will be printed as charlists,
++ non-printable code points will be escaped. Other lists will be printed as lists.
+
+ When `:as_lists` all lists will be printed as lists.
+
+diff --git a/lib/elixir/lib/list.ex b/lib/elixir/lib/list.ex
+index a8155deed..ea4a69abd 100644
+--- a/lib/elixir/lib/list.ex
++++ b/lib/elixir/lib/list.ex
+@@ -1093,7 +1093,7 @@ def to_string(list) when is_list(list) do
+
+ Please check the given list or call inspect/1 to get the list representation, got:
+
+- #{inspect(list)}
++ #{inspect(list, charlists: :as_lists)}
+ """
+ else
+ result when is_binary(result) ->
+@@ -1145,7 +1145,7 @@ def to_charlist(list) when is_list(list) do
+
+ Please check the given list or call inspect/1 to get the list representation, got:
+
+- #{inspect(list)}
++ #{inspect(list, charlists: :as_lists)}
+ """
+ else
+ result when is_list(result) ->
+diff --git a/lib/elixir/test/elixir/inspect_test.exs b/lib/elixir/test/elixir/inspect_test.exs
+index a8c12c36e..f90b69a2c 100644
+--- a/lib/elixir/test/elixir/inspect_test.exs
++++ b/lib/elixir/test/elixir/inspect_test.exs
+@@ -276,10 +276,15 @@ test "printable" do
+
+ test "printable limit" do
+ assert inspect(~c"hello world", printable_limit: 4) == ~s(~c"hell" ++ ...)
++ assert inspect(~c"hello", printable_limit: :infinity) == ~s(~c"hello")
+ # Non printable characters after the limit don't matter
+ assert inspect(~c"hello world" ++ [0], printable_limit: 4) == ~s(~c"hell" ++ ...)
+ # Non printable strings aren't affected by printable limit
+ assert inspect([0, 1, 2, 3, 4], printable_limit: 3) == ~s([0, 1, 2, 3, 4])
++ # Ensure a non-printable value after limit does not crash
++ assert inspect(~c"hello world" ++ [nil], printable_limit: 4) == ~s(~c"hell" ++ ...)
++ # Ensure a non-printable value after default limit does not hang
++ assert String.ends_with?(inspect(List.duplicate(?a, 5000) ++ [nil]), "\" ++ ...")
+ end
+
+ test "keyword" do
+@@ -304,10 +309,20 @@ test "opt infer" do
+ assert inspect([0], charlists: :infer) == "[0]"
+ end
+
+- test "opt as strings" do
++ test "opt as charlists" do
+ assert inspect(~c"john" ++ [0] ++ ~c"doe", charlists: :as_charlists) == ~s(~c"john\\0doe")
+ assert inspect(~c"john", charlists: :as_charlists) == ~s(~c"john")
+ assert inspect([0], charlists: :as_charlists) == ~s(~c"\\0")
++ assert inspect([nil], charlists: :as_charlists) == "[nil]"
++ assert inspect([0xD800], charlists: :as_charlists) == "[55296]"
++ assert inspect([1_114_112], charlists: :as_charlists) == "[1114112]"
++ assert inspect([[?a]], charlists: :as_charlists) == ~s([~c"a"])
++
++ assert inspect([?a, ?b, ?c | nil], charlists: :as_charlists, printable_limit: 4) ==
++ "[97, 98, 99 | nil]"
++
++ assert inspect([?a, ?b, ?c | nil], charlists: :as_charlists, printable_limit: 3) ==
++ ~s(~c"abc" ++ ...)
+ end
+
+ test "opt as lists" do
+diff --git a/lib/elixir/test/elixir/list_test.exs b/lib/elixir/test/elixir/list_test.exs
+index ee02a072a..ec4725877 100644
+--- a/lib/elixir/test/elixir/list_test.exs
++++ b/lib/elixir/test/elixir/list_test.exs
+@@ -309,6 +309,12 @@ test "to_string/1" do
+ assert_raise ArgumentError, ~r"cannot convert the given list to a string", fn ->
+ List.to_string([:a, :b])
+ end
++
++ invalid = List.duplicate(?a, 4096) ++ [nil]
++
++ assert_raise ArgumentError, ~r/got:\n\n\[97, 97, .*\.\.\.\]\n\z/s, fn ->
++ List.to_string(invalid)
++ end
+ end
+
+ test "to_charlist/1" do
+@@ -327,6 +333,12 @@ test "to_charlist/1" do
+ assert_raise ArgumentError, ~r"cannot convert the given list to a charlist", fn ->
+ List.to_charlist([:a, :b])
+ end
++
++ invalid = List.duplicate(?a, 4096) ++ [nil]
++
++ assert_raise ArgumentError, ~r/got:\n\n\[97, 97, .*\.\.\.\]\n\z/s, fn ->
++ List.to_charlist(invalid)
++ end
+ end
+
+ describe "myers_difference/2" do
+--
+2.52.0
+