The on-wiki version oft his newsletter can be found here: https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2025-09-07 ---- Copying function calls from one Wikipedia to another
We now have the option to use natural languages https://www.wikifunctions.org/wiki/Z60 as a default value in embedded function calls. If an argument of Type natural language is omitted, we automatically use the language of the page as the default value for that argument.
Together with Wikidata items and Gregorian calendar dates, this allows for quite powerful flexibility: for example, a function call can omit a date, a Wikidata item *and* a language, and automatically apply to the item of the page, return in the language of the given wiki, and use the current date for its calculation. Such a call can then be copied and pasted from one article to another — even across different language Wikipedias or Wiktionaries!
We don’t have a function yet that uses all three default values, but if you make one that is useful for Wikipedias, let us know! We would love to feature it here.
For example, one of the most frequently occurring sentences on English Wikipedia is “She is a vegetarian. https://en.wikipedia.org/w/index.php?search=%22She+is+a+vegetarian.%22&title=Special%3ASearch&ns0=1” or “He is a vegetarian. https://en.wikipedia.org/w/index.php?search=%22He+is+a+vegetarian.%22&title=Special%3ASearch&ns0=1”, respectively. https://www.wikifunctions.org/wiki/File:Menu_for_editing_embedded_function_calls_(Wikifunctions_2025).pngMenu for editing embedded function calls
Now, one can have an embedded function call such as {{#function:Z26039||Q18338317|}}
If you copy that into the article of Brian May on English Wikipedia (once we deployed to English Wikipedia), it will show the following sentence: “Brian May is a vegetarian.”
You can copy and paste that exact same call to the article about Paul McCartney on English Wikipedia, and get the following sentence: “Paul McCartney is a vegetarian.”
You can also copy it to the German Wikipedia article of Paul McCartney, and you will get the following sentence: “Paul McCartney ist ein Vegetarier.”
Or Swedish: “Paul McCartney är en vegetarian.”
Or Arabic: "بول مكارتني نباتي"
Or Esperanto: “Paul McCartney estas vegetarano.”
And once that is done, you can go back to the article about Brian May in English, and change it to: {{#function:Z26039||Q27522900|}}
Which will result in the slightly more correct sentence: “Brian May is a vegan.”
Now, if we only had a way to update that in all languages at once… 😉[1] https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2025-09-07#cite_note-1
Thanks to Visual Editor, you wouldn’t be editing the raw QIDs, but use a form-based editor to create and maintain the function call. Only when using the raw source editor, you would be confronted with ZIDs and QIDs directly.
1. https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2025-09-07#cite_ref-1This is a not particularly veiled plug for Abstract Wikipedia.
Recent Changes in the software https://www.wikifunctions.org/wiki/File:Displaying_error_messages_(Wikifunctions_2025).pngDisplaying error messages
As part of our work this Quarter to improve the usability of the experience when using Wikifunctions embedded in wiki articles (T397411 https://phabricator.wikimedia.org/T397411), we have improved the experience to show custom, translatable errors in the interface (T402382 https://phabricator.wikimedia.org/T402382). This allows the Wikifunctions community to get more value when they create clear, specific error types and throw them from their code, helping end-users understand what they might have done wrongly and how to fix it. We plan to write some guidance on how to use this feature, and encourage its use, in the near future.
Alongside this work, we've been spending a fair bit of time this Quarter re-writing the back-end function evaluator service to use Rust rather than Node, as it is better suited at juggling multiple WASM sub-processes ( T343720 https://phabricator.wikimedia.org/T343720). Last week we reached the milestone of the prototype Rust code running the lifecycle of routing an incoming call to the correct JavaScript or Python executor (T399321 https://phabricator.wikimedia.org/T399321), and maintaining a ready pool of executors to which to route requests (T399322 https://phabricator.wikimedia.org/T399322). We have also switched the base images over to use Node 22, up from Node 20, as part of wider Wikimedia service updates.
We unfortunately had a partial service outage on Wednesday afternoon/evening US time, caused by a corrupted cached Object (T403671 https://phabricator.wikimedia.org/T403671). The caching layer we added last Quarter for Objects had a flaw that meant it would cache whatever the API gave it, including a corrupted/broken item, and would not re-try. In this case, the crucial Type Z13518/Natural number was mis-cached, and because it is used in many different other Types and Functions, it led to a widespread inability to use the system. We made some urgent fixes to discard error Objects from the cache, and not cache them in future, and emergency deployed the new version of the service that night, fixing new calls. Earlier attempted calls may be cached in a bad state, but these will expire and be replaced over time. Our apologies again for all affected, and our thanks to Wikifunctions community members who first spotted the issue and alerted us to it. News in Types: grammatical person and Celtic mutations
We implemented two new enumerations, Grammatical person (3) (Z27970) https://www.wikifunctions.org/wiki/Z27970 and Celtic mutation (Z27971) https://www.wikifunctions.org/wiki/Z27971.
Many languages have the notion of a grammatical person https://en.wikipedia.org/wiki/Grammatical%20person, and they often have three distinct grammatical persons: referring to the speaker, or to the listener, or to someone else. Based on the proposal by Dv103 https://www.wikifunctions.org/wiki/Wikifunctions:Type_proposals/Grammatical_person_(1/2/3), we now have an enumeration for these three values.
Breton and other Celtic languages are characterised by consonant mutations https://en.wikipedia.org/wiki/Breton%20mutations at the beginning of certain words. In order to describe them easier, a proposal by Dv103 https://www.wikifunctions.org/wiki/Wikifunctions:Type_proposals/Breton_mutation to identify the five different mutations has been made, agreed on, and implemented.
We also tried to create a Type for Chemical element https://www.wikifunctions.org/wiki/Wikifunctions:Type_proposals/Chemical_element, but due to the unprecedented size of the Type for us, it surfaces two issues so far, which we are currently working on. We hope to have these fixed soon.
There are further type proposals https://www.wikifunctions.org/wiki/Wikifunctions:Type_proposals, and I will assess them regularly and keep implementing them – particularly those that have consensus, or wide support. So, keep making proposals, keep discussing and voting on the existing proposals, and we keep implementing them.
Fresh Functions weekly: 36 new Functions
Last week the community created 36 new functions. Here is an incomplete list of functions with implementations and passing tests to get a taste of what functions have been created. Thanks everybody for contributing!
- round rational with numerator length (Z27699) https://www.wikifunctions.org/wiki/Z27699 - round rational to fixed decimal places, simplified (Z27705) https://www.wikifunctions.org/wiki/Z27705 - round rational to fix decimal places, unsimplified (Z27719) https://www.wikifunctions.org/wiki/Z27719 - decimal places in rational significant figures (Z27730) https://www.wikifunctions.org/wiki/Z27730 - decimal exponent in unrounded scientific notation (Z27737) https://www.wikifunctions.org/wiki/Z27737 - switch on gender (m/f) and number (s/p) (Z27748) https://www.wikifunctions.org/wiki/Z27748 - age of a person in years (Z27758) https://www.wikifunctions.org/wiki/Z27758 - decimal exponent in rounded scientific notation (Z27762) https://www.wikifunctions.org/wiki/Z27762 - round to decimal (simplified) with sig figs (Z27765) https://www.wikifunctions.org/wiki/Z27765 - round natural to significant figures (Z27778) https://www.wikifunctions.org/wiki/Z27778 - winning probability from ELO rating (Z27783) https://www.wikifunctions.org/wiki/Z27783 - update ELO rating after matches (Z27791) https://www.wikifunctions.org/wiki/Z27791 - round to decimal (unsimplified) with sig figs (Z27803) https://www.wikifunctions.org/wiki/Z27803 - is simplified denominator divisible by factor (Z27811) https://www.wikifunctions.org/wiki/Z27811 - is simplified denominator a factor of multiple (Z27815) https://www.wikifunctions.org/wiki/Z27815 - signed numerator of simplified rational number (Z27820) https://www.wikifunctions.org/wiki/Z27820 - multiply natural by integer (Z27826) https://www.wikifunctions.org/wiki/Z27826 - unsimplified rational from Z, N (Z27836) https://www.wikifunctions.org/wiki/Z27836 - scale Wikidata quantity to new units (Z27846) https://www.wikifunctions.org/wiki/Z27846 - join two HTML fragments (Z27849) https://www.wikifunctions.org/wiki/Z27849 - raw content of HTML fragment (Z27854) https://www.wikifunctions.org/wiki/Z27854 - HTML raw content in HTML fragment (Z27861) https://www.wikifunctions.org/wiki/Z27861 - string in HTML fragment (Z27868) https://www.wikifunctions.org/wiki/Z27868 - wrap an HTML fragment in a tag (Z27873) https://www.wikifunctions.org/wiki/Z27873 - create wikitable with columns and rows headers (Z27878) https://www.wikifunctions.org/wiki/Z27878 - name for table header (Z27885) https://www.wikifunctions.org/wiki/Z27885 - choose the language and replace the parameters (Z27893) https://www.wikifunctions.org/wiki/Z27893 - label of item in fallback language (Z27899) https://www.wikifunctions.org/wiki/Z27899 - choose string in first available language (Z27905) https://www.wikifunctions.org/wiki/Z27905 - replace parameters in a string (Z27908) https://www.wikifunctions.org/wiki/Z27908 - typed key–value pairs from typed map (Z27915) https://www.wikifunctions.org/wiki/Z27915 - Body Mass Index (metric, rational) (Z27919) https://www.wikifunctions.org/wiki/Z27919 - Unlabelled (Z27924) https://www.wikifunctions.org/wiki/Z27924 - join multiple HTML fragments (Z27926) https://www.wikifunctions.org/wiki/Z27926 - transform HTML fragment with unary string function (Z27932) https://www.wikifunctions.org/wiki/Z27932 - weight of a configuration (Z27938) https://www.wikifunctions.org/wiki/Z27938
A complete list of all functions sorted by when they were created https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&orderby=latest is available.
abstract-wikipedia@lists.wikimedia.org