Wikifunctions:Status updates/2026-10-17
| ◀ | ▶ |
Changes in evaluator representations
As of next Wednesday, we will make a slight change to the intermediate representation of function arguments in the evaluator. These objects will no longer be ingested as pure normal-form ZObjects; instead, Lists will be represented as JSON arrays. To be more precise, they will be represented as Benjamin arrays, the type-safe array representation used in canonical form and elsewhere in WikiLambda. Thus, instead of
{
"Z1K1": {
"Z1K1": { "Z1K1": "Z9", "Z9K1": "Z7" },
"Z7K1": { "Z1K1": "Z9", "Z9K1": "Z881" },
"Z881K1": { "Z1K1": "Z9", "Z9K1": "Z6" }
},
"K1": { "Z1K1": "Z6", "Z6K1": "hayyy" },
"K2": {
"Z1K1": {
"Z1K1": { "Z1K1": "Z9", "Z9K1": "Z7" },
"Z7K1": { "Z1K1": "Z9", "Z9K1": "Z881" },
"Z881K1": { "Z1K1": "Z9", "Z9K1": "Z6" }
}
}
}
the executors will now see
[
{ "Z1K1": "Z9", "Z9K1": "Z6" },
{ "Z1K1": "Z6", "Z6K1": "hayyy" }
]
As you can guess, this is being done to reduce object size: a normal-form list represents the list's type once per list value, which gets expensive very fast and causes explosive memory usage in the executors (just imagine what a nested list would look like!). With the new approach, the type will be represented only once per list.
So, what do you need to do? If you haven't been working with type converter functions, nothing. If your type converter functions don't convert types with embedded lists, also nothing! This change only affects you if you're working on type converter functions that manipulate types with internal list values. For now, this change only affects input objects (function arguments), so the focus is on type converters to code. Your converters will now need to be able to handle the new format instead of the old one (or in addition to it, if you'd like to avoid breakages in the interim!). We may make a similar change to function return values in future, but for now, type converters from code are unaffected.
To make this a bit easier, we are also enabling you to call type_convert_to_code() and type_convert_from_code() (in JS: typeConvertToCode and typeConvertFromCode) directly in your code implementations and type converter code! By using these functions, you'll get forward- and backward-compatible behavior. A major limitation, though, is that these functions currently work only for built-in types and combinations thereof: only Z6/String, Z9/Reference, Z40/Boolean, Z21/Void, Z881()/List, Z882()/Pair, and Z883()/Map types are supported in these functions. Thus, you couldn't use type_convert_to_code() on a Z881(Z13518)/List of Natural numbers, but you could use it on a Z881(Z6)/List of Strings or even a Z881(Z882(Z6, Z40))/List of Pairs of String and Boolean. This represents a step toward an eventual future where you can define type converters in terms of each other, allowing for type converter code reuse!
Recent Changes in the software
This week, we made a number of improvements. In the details dialog on Wikifunctions, we refreshed the time-ago labels so they no longer go stale (T440533), and we removed a confusing message about provenance in the Test case results section (T440537). We also fixed an issue where Object labels that looked like ZIDs displayed incorrectly and, in some cases, could not be published (T437013).
In addition, the “About” quick editing of labels/aliases/descriptions no longer overwrites other editors’ changes made after you opened the page (T436793), and rollback links for edits on Objects work again (T395219). We also fixed “Copy result link” so that it copies the result link rather than the content of the current inputs (T433744).
On Abstract Wikipedia, because some result links are too long for browsers to handle, we no longer offer the “Copy result link” option in those cases (T439078), and we improved the highlight that connects a fragment to the preview (T439109).
Finally, Igbo and Dagbani Wikipedias have had integration enabled, following Malayalam. Communities can turn integration on through Community Configuration, and nothing is added automatically: whether and which articles to integrate is always the local community's decision. You can find more information in the newsletter two weeks ago.
Fresh Functions weekly: 119 new Functions
This week we had 119 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!
- shares border with-sentence in Russian (Z44403)
- part-of sentence in Russian (Z44406)
- em dash instantiating sentence (Monolingual text) (Z44421)
- is a member of, sentence in Russian (Z44424)
- Year-specific sentence from statement, in Russian (Z44430)
- format contents of stated-in Reference (Z44433)
- format contents of website Reference (Z44435)
- noun phrase listing items (mono) (Z44443)
- heading listing items (Z44447)
- intro for species with hypernym in Russian (Z44462)
- most recent year-specific sentence (HTML) (Z44472)
- English clause text (Z44477)
- statement with a given item as its value (Z44480)
- class part count sentence, Japanese (Z44483)
- class part count sentence, English (Z44486)
- class part count sentence (mono) (Z44491)
- class part count sentence (HTML) (Z44494)
- class part sentence from values, Japanese (Z44497)
- class part sentence from values, English (Z44500)
- combined fractional area reduction (Z44543)
- HTML table for alphabet string list (Z44558)
- Wiktionary section for form (Z44567)
- Sub-subsection (Z44569)
- navbox for a Gregorian year (Z44575)
- value with a qualifier, Japanese (Z44577)
- value with a qualifier, English (Z44581)
- is item reference non-binary? (Z44592)
- is item reference male? (Z44593)
- Wiktionary link to lexeme (Z44609)
- Oxford join strings with & (Z44613)
- pronoun(s) of this person, no fallback, (Z44615)
- pronouns of a person in a specific language (Z44619)
- phrase with a required prefix (Z44630)
- genitive phrase with group, Japanese (Z44631)
- genitive phrase with group, English (Z44632)
- list of items from clause values (Z44633)
- list of items from clause values (Z44633)
- render item or generated phrase (Z44635)
- spatial relation phrase, Japanese (Z44636)
- spatial relation phrase, English (Z44637)
- predicate from a noun phrase, Japanese (Z44638)
- genitive phrase with group (Z44639)
- genitive phrase, mul fallback (Z44640)
- relation modifier phrase (monolingual) (Z44641)
- spatial sentence relative to a group, mul fallback (Z44642)
- spatial relation phrase (Z44643)
- spatial relation phrase, mul fallback (Z44644)
- omit markers for generated phrases (Z44686)
- spatial sentence relative to a group (Z44687)
- item of a clause value (Z44688)
- spatial sentence (HTML) (Z44689)
- state sentence, Japanese (Z44690)
- state sentence, English (Z44691)
- state sentence, mul fallback (Z44692)
- state sentence (HTML) (Z44693)
- is HTML fragment (Z44723)
- optional (Z44729)
- public domain in US by publication date (Z44736)
- Malayalm noun from Lexeme reference (Z44747)
- intro for year in Malayalam (Z44763)
- Punjabi ordinal + ਵਾਂ, with exceptions (Z44769)
- Malayalam ordinal (Z44771)
- Punjabi cardinal (Z44772)
- intro for year (HTML from Roman Year) (Z44777)
- intro for year (HTML from QID) (Z44780)
- Personal pronoun lexemes for language (Z44821)
- Filter pronoun inventory by features (Z44822)
- Personal pronoun lexemes from features (Z44823)
- Personal pronoun forms from features (Z44858)
- Lexeme form references from fetched lexeme (Z44900)
- Personal pronoun strings from features (Z44917)
- Personal pronoun string from features (Z44923)
- Unique string from list (Z44924)
- Personal pronoun subject expression (Z44933)
- Personal pronoun object expression (Z44938)
- Noun forms from lexeme (Z44959)
- Noun strings from lexeme (Z44970)
- Noun string from lexeme (Z44981)
- Noun lexemes from Wikidata item (Z44992)
- Noun forms from Wikidata item (Z45002)
- Noun strings from Wikidata item (Z45013)
- Noun string from Wikidata item (Z45024)
- Adjective forms from lexeme (Z45035)
- Adjective strings from lexeme (Z45044)
- Adjective string from lexeme (Z45053)
- Adjective lexemes from Wikidata item (Z45064)
- Adjective forms from Wikidata item (Z45073)
- Adjective strings from Wikidata item (Z45082)
- Distinct strings from lexeme forms (Z45083)
- Adjective string from Wikidata item (Z45102)
- does it start by a French vowel? (Z45114)
- is lexeme in this language? (Z45118)
- is it a French lexeme? (Z45123)
- Applicable Wikidata statements by strategy (Z45127)
- Current statements for property from Wikidata item (Z45128)
- Current values for property from Wikidata item (Z45129)
- Infobox row from values (Z45130)
- Infobox rows from Wikidata item (Z45131)
- Infobox property row from Wikidata item (Z45165)
- Infobox property row from resolved Wikidata item (Z45174)
- grammatical gender (m/f/n) to use for this person (Z45198)
- Compact Wikidata item for infobox (Z45203)
- Verb forms from lexeme (Z45224)
- Verb strings from lexeme (Z45235)
- Verb string from lexeme (Z45246)
- Verb lexemes from Wikidata item (Z45257)
- Verb forms from Wikidata item (Z45267)
- Verb strings from Wikidata item (Z45278)
- Verb string from Wikidata item (Z45289)
- Sense references for item from lexemes (Z45305)
A complete list of all functions sorted by when they were created is available.