summaryrefslogtreecommitdiff
path: root/Meta/Lagom
AgeCommit message (Collapse)Author
2021-12-24LibGL+LibSoftGPU: Move rendering related code to LibSoftGPU libraryStephan Unverwerth
This introduces a new library, LibSoftGPU, that incorporates all rendering related features that formerly resided within LibGL itself. Going forward we will make both libraries completely independent from each other allowing LibGL to load different, possibly accelerated, rendering backends.
2021-12-22IPCCompiler: Default initialize all parameter member variablesBrian Gianforcaro
PVS Studio static analysis noticed we didn't initialize these in a bunch of cases. This change fixes that so we will always initialize these using universal initialization.
2021-12-22Meta: Add a cmake flag for building for compiler explorerAli Mohammad Pur
We don't need to build tests/binaries for CE.
2021-12-21LibUnicode: Remove now unused value-from-string generator overloadTimothy Flynn
The generate_value_from_string_for_dynamic_loading() overload was just temporary until all generates were switched over to dynamic loading.
2021-12-21LibUnicode: Dynamically load the generated UnicodeDateTimeFormat symbolsTimothy Flynn
2021-12-21LibUnicode: Dynamically load the generated UnicodeNumberFormat symbolsTimothy Flynn
2021-12-21LibUnicode: Dynamically load the generated UnicodeLocale symbolsTimothy Flynn
2021-12-21LibUnicode: Dynamically load the generated UnicodeData symbolsTimothy Flynn
The generated data for libunicodedata.so is quite large, and loading it is a price paid by nearly every application by way of depending on LibRegex. In order to defer this cost until an application actually uses one of the surrounding APIs, dynamically load the generated symbols. To be able to load the symbols dynamically, the generated methods must have demangled names. Typically, this is accomplished with `extern "C"` blocks. The clang toolchain complains about this here because the types returned from the generators are strictly C++ types. So to demangle the names, we use the asm() compiler directive to manually define a symbol name; the caveat is that we *must* be sure the symbols are unique. As an extra precaution, we prefix each symbol name with "unicode_". For more details, see: https://gcc.gnu.org/onlinedocs/gcc/Asm-Labels.html This symbol loader used in this implementation provides the additional benefit of removing many [[maybe_unused]] attributes from the LibUnicode methods. Internally, if ENABLE_UNICODE_DATABASE_DOWNLOAD is OFF, the loader is able to stub out the function pointers it returns. Note that as of this commit, LibUnicode is still directly linked against LibUnicodeData. This commit is just a first step towards removing that.
2021-12-21Meta: Add a fuzzer for the QOILoaderLinus Groh
2021-12-18Lagom: Bind `time_zone_list_index_type` in the generatorMichel Hermier
The variable `s_time_zone_list_index_type` seems to be unused (detected when compiling with clang), and it seems logical to bind it even it if it is not used for now.
2021-12-15Lagom: Add argument `WORKING_DIRECTORY` to `lagom_test(...)`Simon Woertz
So far the working directory was set in some cases using `set_tests_properties(...)`, but this requires to know which name is picked by `lagom_test(...)` when calling `add_test(...)`. In case of adding multiple test cases using a globbing pattern this would require to duplicate code to construct the test name from the file name.
2021-12-14LibWeb: Add support for the BufferSource IDL parameter typeLinus Groh
2021-12-14LibWeb: Add the SubtleCrypto interfaceLinus Groh
Just some boilerplate code to get started :^) This adds both the SubtleCrypto constructor to the window object, as well as the crypto.subtle instance attribute.
2021-12-13LibUnicode: Generate unique list patterns and lists of list patternsTimothy Flynn
2021-12-13LibUnicode: Generate unique list of keyword valuesTimothy Flynn
2021-12-13LibUnicode: Generate unique lists of localized currenciesTimothy Flynn
2021-12-13LibUnicode: Generate unique lists of languages, territories, and scriptsTimothy Flynn
2021-12-13LibUnicode: Remove unused fields from generated structuresTimothy Flynn
A couple of structures held a string index that is unused. Removing them also removes the string values from the unique string list.
2021-12-13LibUnicode: Generate unique lists of hour cyclesTimothy Flynn
2021-12-13LibUnicode: Generate unique lists of time zone structuresTimothy Flynn
2021-12-13LibUnicode: Generate unique lists of day period structuresTimothy Flynn
2021-12-13LibUnicode: Generate unique day period structuresTimothy Flynn
2021-12-13LibUnicode: Generate unique time zone structuresTimothy Flynn
Each of the 374 locales contain 156 time zone structures. Of these 58,344 structures, 13,578 are unique.
2021-12-13LibUnicode: Generate unique calendar structuresTimothy Flynn
Of the 374 generated calendars, 173 are unique.
2021-12-13LibUnicode: Generate unique lists of calendar range patternsTimothy Flynn
Of the 374 range pattern lists and 374 range12 pattern lists, 230 are unique.
2021-12-13LibUnicode: Generate unique lists of calendar patternsTimothy Flynn
Of the 374 generated lists, 152 are unique. These lists have upwards of 1000 entries as well, so the de-duplication is particularly nice.
2021-12-13LibUnicode: Generate unique lists of calendar symbols structuresTimothy Flynn
Of the 374 generated lists, 120 are unique.
2021-12-13LibUnicode: Generate unique calendar symbols structuresTimothy Flynn
Each of the 374 generated calendars include 4 symbols structures. Of these 1496 structures, only 386 are unique.
2021-12-13LibUnicode: Generate CalendarSymbols in a predetermined orderTimothy Flynn
Similar to commit 2a7f36b392, this change moves the generated CalendarSymbol enumeration to the public LibUnicode/NumberFormat.h header with a pre-defined set of symbols that we need. This is to prepare for uniquely generating the CalendarSymbols structure.
2021-12-13LibUnicode: Generate unique lists of calendar symbolsTimothy Flynn
Each of the 374 generated calendars include 4 sets of symbols, each of which have 3 lists of symbols (narrow, short, long). Of these 4488 lists, only 819 are unique.
2021-12-13LibUnicode: Generate unique calendar format structuresTimothy Flynn
There are currently 374 calendars generated, each of which include 3 CalendarFormat structures. Of these 1122 instances, only 167 are unique.
2021-12-13LibUnicode: Define traits for a vector of integral/enum typesTimothy Flynn
Any generator which defines a unique storage instance for a list of numbers will need this.
2021-12-12LibWeb: Implement TextEncoder.prototype.encode()Linus Groh
2021-12-12LibWeb: Add the TextEncoder interfaceLinus Groh
This is from the Encoding Standard (https://encoding.spec.whatwg.org), and therefore gets its own namespace and subdirectory within LibWeb :^)
2021-12-11Everywhere: Fix -Winconsistent-missing-override warnings from ClangDaniel Bertalan
This option is already enabled when building Lagom, so let's enable it for the main build too. We will no longer be surprised by Lagom Clang CI builds failing while everything compiles locally. Furthermore, the stronger `-Wsuggest-override` warning is enabled in this commit, which enforces the use of the `override` keyword in all classes, not just those which already have some methods marked as `override`. This works with both GCC and Clang.
2021-12-11LibUnicode: Generate unique unitsTimothy Flynn
2021-12-11LibUnicode: Generate unique number systemsTimothy Flynn
2021-12-11LibJS+LibUnicode: Generate unique numeric symbol listsTimothy Flynn
There are 443 number system objects generated, each of which held an array of number system symbols. Of those 443 arrays, only 39 are unique. To uniquely store these, this change moves the generated NumericSymbol enumeration to the public LibUnicode/NumberFormat.h header with a pre- defined set of symbols that we need. This is to ensure the generated, unique arrays are created in a known order with known symbols. While it is unfortunate to no longer discover these symbols at generation time, it does allow us to ignore unwanted symbols and perform less string-to- enumeration conversions at lookup time.
2021-12-11LibUnicode: Generate unique NumberFormat lists for each UnitTimothy Flynn
2021-12-11LibUnicode: Generate unique NumberFormat lists for each NumberSystemTimothy Flynn
2021-12-11LibUnicode: Support storing lists in UniqueStorage for code generatorsTimothy Flynn
The evolution of UniqueStorage has been as follows: 1. It was created as UniqueStringStorage to ensure only one copy of each unique string is generated. Interested parties stored an index into a unique string list, rather than the string itself. Commits: f9e605397c and 04e6b43f05 2. It became apparent that non-string structures could also be de- duplicated to reduce the size of libunicode.so. UniqueStringStorage was generalized to UniqueStorage for this purpose. Commit: d8e6beb14f It's now also apparent that there's heavy duplication of lists of structures. For example, the NumberFormat generator stores 4 lists of NumberFormat objects. In total, we currently generate nearly 2,000 lists of these objects, of which 275 are unique. This change updates UniqueStorage to support storing lists. The only change is how the storage is generated - we generate each stored list individually, then an array storing spans of those lists.
2021-12-10LibUnicode: Parse and generate per-locale day period rangesTimothy Flynn
2021-12-10LibUnicode: Parse and generate secondary day period symbolsTimothy Flynn
Generate morning2, afternoon2, evening2, and night2 symbols.
2021-12-10LibJS+LibUnicode: Rename some Unicode::DayPeriod valuesTimothy Flynn
In the CLDR, there aren't "night" values, there are "night1" & "night2" values. This is for locales which use a different name for nighttime depending on the hour. For example, the ja locale uses "倜" between the hours of 19:00 and 23:00, and "倜中" between the hours of 23:00 and 04:00. Our CLDR parser is currently ignoring "night2", so this rename is to prepare for that. We could probably come up with better names, but in the end, the API in LibUnicode will be such that outside callers won't even see Night1, etc.
2021-12-09LibUnicode: Parse and generate date time range format patternsTimothy Flynn
2021-12-09LibUnicode: Parse and generate format pattern skeletonsTimothy Flynn
Pattern skeletons are more or less the "key" of format patterns. Every format pattern is assigned a skeleton. Interval patterns (which are not yet parsed) are also assigned a skeleton - this is used to match them to an "owning" format pattern. So we will use the skeleton generated here to match format patterns at runtime with their available interval patterns. An alternative approach would be to append interval patterns directly to their owning format pattern, but this has some draw backs: 1. Skeletons aren't totally unique. A skeleton may appear in both the "dateFormats" and "availableFormats" objects, in which case the same interval formats would be generated more than once. 2. Otherwise unique format patterns may only differ by the interval patterns assigned to them. This would cause the UniqueStorage for the format patterns to increase in size, impacting both compile times and libunicode.so size.
2021-12-09LibUnicode: Fix typo in format pattern parserTimothy Flynn
See: https://unicode.org/reports/tr35/tr35-dates.html#dfst-day
2021-12-09LibWeb: Remove now-unused CustomStyleValueSam Atkins
2021-12-08LibUnicode: Parse and generate time zone names in long and short formTimothy Flynn
2021-12-08LibUnicode: Generate era, month, weekday and day period calendar symbolsTimothy Flynn
The parsing in parse_calendar_symbols() might be a bit more verbose than it really needs to be, but it is to ensure the symbols are generated in a known order that we can control with enumerations.