Commit 6ec1ccbee8 for perl
commit 6ec1ccbee899a29c0776f65b73e69a001a415ae1
Author: Paul Evans <leonerd@leonerd.org.uk>
Date: Mon Oct 12 16:09:45 2026 +0100
Expose av_create_and_push + av_create_and_unshift_one as real API functions
These were initially added as experimental and specifically without the
API wrappers back in 2007:
commit 29a861e74521a5f903bccb023c86950d733fa0b7
Author: Nicholas Clark <nick@ccl4.org>
Date: Mon Jan 29 18:28:16 2007 +0000
Add av_create_and_push() and av_create_and_unshift_one() to refactor
out two repeated idioms.
Much later the experimental flag was removed in 2021:
commit 541e9af01a41e04539c3aedd46abb741ef89fb9b
Author: Richard Leach <rich+perl@hyphen-dash-hyphen.info>
Date: Mon Jun 7 00:35:38 2021 +0100
av_create_and_push/unshift_one: remove experimental flag
There doesn't seem to be a reason to leave the `o` and `e` flags on
these; as doing so prevents the short-named wrapper macro from being
created.
diff --git a/embed.fnc b/embed.fnc
index d4bb7b3371..61a2deefe1 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -938,10 +938,10 @@ CTp |void |atfork_unlock
Cop |SV ** |av_arylen_p |NN AV *av
Adp |void |av_clear |NN AV *av
ARdip |Size_t |av_count |NN AV *av
-Adeop |void |av_create_and_push \
+Adp |void |av_create_and_push \
|NN AV ** const avp \
|NN SV * const val
-Adeop |SV ** |av_create_and_unshift_one \
+Adp |SV ** |av_create_and_unshift_one \
|NN AV ** const avp \
|NN SV * const val
Adp |SV * |av_delete |NN AV *av \
diff --git a/embed.h b/embed.h
index ad499da6a5..8b5ab841db 100644
--- a/embed.h
+++ b/embed.h
@@ -122,6 +122,8 @@
# define atfork_unlock Perl_atfork_unlock
# define av_clear(a) Perl_av_clear(aTHX_ a)
# define av_count(a) Perl_av_count(aTHX_ a)
+# define av_create_and_push(a,b) Perl_av_create_and_push(aTHX_ a,b)
+# define av_create_and_unshift_one(a,b) Perl_av_create_and_unshift_one(aTHX_ a,b)
# define av_delete(a,b,c) Perl_av_delete(aTHX_ a,b,c)
# define av_dump(a) Perl_av_dump(aTHX_ a)
# define av_exists(a,b) Perl_av_exists(aTHX_ a,b)