summaryrefslogtreecommitdiff
path: root/Meta
AgeCommit message (Collapse)Author
2022-08-28LibJS: Turn initialize_global_object() into a regular initialize()Linus Groh
There's nothing special about global object initialization anymore, this can just work the same way as for any other object now.
2022-08-28Meta: Enforce no leading zeros for emoji filenamesRyan Liptak
The current lookup code and emoji.txt generator expects codepoints to not include leading zeros. This may change in the future, but it's worth enforcing the current convention until then.
2022-08-27LibJS+LibUnicode: Move some constant arrays to a separate headerdavidot
Since LibUnicode depends on this data it used to include Intl/AbstractOperations which in turn includes a number of other LibJS headers. By moving this to its own header with minimal includes we can save on rebuilding LibUnicode for unrelated LibJS header changes.
2022-08-27LibJS: Move intrinsics to the realmLinus Groh
Intrinsics, i.e. mostly constructor and prototype objects, but also things like empty and new object shape now live on a new heap-allocated JS::Intrinsics object, thus completing the long journey of taking all the magic away from the global object. This represents the Realm's [[Intrinsics]] slot in the spec and matches its existing [[GlobalObject]] / [[GlobalEnv]] slots in terms of architecture. In the majority of cases it should now be possibly to fully allocate a regular object without the global object existing, and in fact that's what we do now - the realm is allocated before the global object, and the intrinsics between both :^)
2022-08-27Meta/CMake: Build Lagom with -g1 instead of -gAndreas Kling
This *drastically* improves build performance by reducing the size of object files by around 10x or more.
2022-08-24Toolchain: Update binutils to version 2.39Brian Gianforcaro
2022-08-24Meta: Only include headings for populated groups/subgroups in emoji.txtRyan Liptak
The primary motivation for this is to make `generate-emoji-txt.sh` more useful for generating a compact list of new emoji being added (e.g. for use in commit messages / PRs) if it's run with an emoji image directory that contains only the new emojis.
2022-08-23CI: Bust the macOS Lagom ccache and reduce its sizeTimothy Flynn
It currently takes upwards of 40 minutes to download the ccache on macOS and often errors-out near the end. Change the cache version to bust it so we can start anew. Reduce its max size to 2 GB (a clean build is ~0.9 GB, so this allows just over 2 clean builds to be cached).
2022-08-23Meta: Only run the emoji generator for Serenity buildsTimothy Flynn
It is not needed on Lagom, and was incidentally run twice.
2022-08-23Meta: Ensure the emoji generator depends on its own scriptTimothy Flynn
If the script changes, it better be re-run.
2022-08-23LibTimeZone: Update to TZDB version 2022cTimothy Flynn
https://mm.icann.org/pipermail/tz-announce/2022-August/000072.html
2022-08-23Meta: Remove check for QEMU < 7.0 on aarch64 buildTimon Kruiper
With the previous commit, we can now run our aarch64 kernel with QEMU 7.x :^)
2022-08-23LibJS+LibWeb: Reduce use of GlobalObject as an intermediaryLinus Groh
- Prefer VM::current_realm() over GlobalObject::associated_realm() - Prefer VM::heap() over GlobalObject::heap() - Prefer Cell::vm() over Cell::global_object() - Prefer Wrapper::vm() over Wrapper::global_object() - Inline Realm::global_object() calls used to access intrinsics as they will later perform a direct lookup without going through the global object
2022-08-23LibJS: Pass Realm to define_native_{accessor,function}()Linus Groh
This is needed so that the allocated NativeFunction receives the correct realm, usually forwarded from the Object's initialize() function, rather than using the current realm.
2022-08-23LibJS: Pass Realm to GlobalObject::initialize_global_object()Linus Groh
Global object initialization is tightly coupled to realm creation, so simply pass it to the function instead of relying on the non-standard 'associated realm' concept, which I'd like to remove later. This works essentially the same way as regular Object::initialize() now. Additionally this allows us to forward the realm to GlobalObject's add_constructor() / initialize_constructor() helpers, so they set the correct realm on the allocated constructor function object.
2022-08-23LibJS: Remove GlobalObject parameter from native functionsLinus Groh
2022-08-23LibWeb: Replace GlobalObject with VM in remaining AOs [Part 4/4]Linus Groh
2022-08-23LibWeb: Replace GlobalObject with Realm in wrapper functionsLinus Groh
Similar to create() in LibJS, wrap() et al. are on a low enough level to warrant passing a Realm directly instead of relying on the current realm from the VM, as a wrapper may need to be allocated while no JS is being executed.
2022-08-23LibJS: Replace GlobalObject with VM in common AOs [Part 18/19]Linus Groh
2022-08-23LibJS: Replace GlobalObject with VM in Iterator AOs [Part 7/19]Linus Groh
2022-08-23LibJS: Replace GlobalObject with VM in Value AOs [Part 4/19]Linus Groh
This is where the fun begins. :^)
2022-08-23LibJS: Remove GlobalObject from VM::this_value()Linus Groh
This is a continuation of the previous six commits. The global object is only needed to return it if the execution context stack is empty, but that doesn't seem like a useful thing to allow in the first place - if you're not currently executing JS, and the execution context stack is empty, there is no this value to retrieve.
2022-08-23LibJS: Remove GlobalObject from VM::throw_completion()Linus Groh
This is a continuation of the previous five commits. A first big step into the direction of no longer having to pass a realm (or currently, a global object) trough layers upon layers of AOs! Unlike the create() APIs we can safely assume that this is only ever called when a running execution context and therefore current realm exists. If not, you can always manually allocate the Error and put it in a Completion :^) In the spec, throw exceptions implicitly use the current realm's intrinsics as well: https://tc39.es/ecma262/#sec-throw-an-exception
2022-08-23LibJS+LibWeb: Replace GlobalObject with Realm in Heap::allocate<T>()Linus Groh
This is a continuation of the previous three commits. Now that create() receives the allocating realm, we can simply forward that to allocate(), which accounts for the majority of these changes. Additionally, we can get rid of the realm_from_global_object() in one place, with one more remaining in VM::throw_completion().
2022-08-23LibJS+LibWeb: Replace GlobalObject with Realm in create() functionsLinus Groh
This is a continuation of the previous two commits. As allocating a JS cell already primarily involves a realm instead of a global object, and we'll need to pass one to the allocate() function itself eventually (it's bridged via the global object right now), the create() functions need to receive a realm as well. The plan is for this to be the highest-level function that actually receives a realm and passes it around, AOs on an even higher level will use the "current realm" concept via VM::current_realm() as that's what the spec assumes; passing around realms (or global objects, for that matter) on higher AO levels is pointless and unlike for allocating individual objects, which may happen outside of regular JS execution, we don't need control over the specific realm that is being used there.
2022-08-23LibJS+LibWeb: Replace GlobalObject with Realm in initialize() functionsLinus Groh
This is a continuation of the previous commit. Calling initialize() is the first thing that's done after allocating a cell on the JS heap - and in the common case of allocating an object, that's where properties are assigned and intrinsics occasionally accessed. Since those are supposed to live on the realm eventually, this is another step into that direction.
2022-08-23LibJS+LibWeb: Replace GlobalObject with Realm in object constructorsLinus Groh
No functional changes - we can still very easily get to the global object via `Realm::global_object()`. This is in preparation of moving the intrinsics to the realm and no longer having to pass a global object when allocating any object. In a few (now, and many more in subsequent commits) places we get a realm using `GlobalObject::associated_realm()`, this is intended to be temporary. For example, create() functions will later receive the same treatment and are passed a realm instead of a global object.
2022-08-23CI: Install newer Bash via homebrew on macOSLinus Groh
The recently added generate-emoji-txt.sh script uses a Bash 4 substitution feature, causing CI to fail as macOS ships an ancient Bash 3.x. We'll want to use a more recent version anyway, so let's do that instead of updading the script to older syntax.
2022-08-22Meta: Move downloading of emoji-test.txt to unicode_data.cmakeTimothy Flynn
The current emoji_txt.cmake does not handle download errors (which were a common source of issues in the build problems channel) or Unicode versioning. These are both handled by unicode_data.cmake. Move the download to unicode_data.cmake so that we can more easily handle next month's Unicode 15 release.
2022-08-22Meta: Generate emoji.txt at build time from Unicode's emoji-test.txtRyan Liptak
Instead of manually updating emoji.txt whenever new emoji are added, we use Unicode's emoji-test.txt to generate emoji.txt on each build, including only the emojis that Serenity supports at that time. By using emoji-test.txt, we can also include all forms of each emoji (fully-qualified, minimally-qualified, and unqualified) which can be helpful when double-checking how certain forms are handled.
2022-08-20Meta: Add check-emoji script to validate emoji filenamesRyan Liptak
Verifies that emoji filenames: - Contain only uppercase letters, numbers, +, and _ - Use _ and a separator between codepoints, not + - Do not include the U+FE0F emoji presentation specifier
2022-08-17Meta: Disallow running with QEMU >= 7.x on aarch64 buildTimon Kruiper
This is currently broken upstream, and our aarch64 Kernel only runs with QEMU 6.x.
2022-08-17LibUnicode: Generate code point display names with run-length encodingTimothy Flynn
Similar to commit becec35, our code point display name data was a large list of StringViews. RLE can be used here as well to remove about 32 MB from the initialized data section to the read-only section. Some of the refactoring to store strings as indices into an RLE array also lets us clean up some of the code point name generators.
2022-08-17LibUnicode: Mark UniqueStringStorage::generate as constantTimothy Flynn
This is just to allow it to be invoked from callers who hold a constant UniqueStringStorage instance.
2022-08-16LibTimeZone+LibUnicode: Generate string data with run-length encodingTimothy Flynn
Currently, the unique string lists are stored in the initialized data sections of their shared libraries. In order to move the data to the read-only section, generate the strings using RLE arrays. We generate two arrays: the first is the RLE data itself, the second is a list of indices into the RLE array for each string. We then generate a decoding method to convert an RLE string to a StringView.
2022-08-16Meta: Remove an outdated `MAKE_DIRECTORY` call for pnp IDsTim Schumacher
We are downloading these directly into the build directory now, and generating the source code from there, so we no longer need the manually created directory. While we are at it, remove two variables that seem to be no longer in use, and at least one of which is confusing regarding a missing prefix.
2022-08-15Meta: Remove TZDB duplicationEmily Trau
2022-08-14LibWeb: Correct variable name in `get_shortest_function_length()`Sam Atkins
2022-08-14LibWeb: Implement Path2D classSam Atkins
2022-08-14LibWeb: Allow "unrestricted" floats and doubles in IDLSam Atkins
For now, we don't treat them any differently from regular floats and doubles.
2022-08-14Everywhere: Get rid of the fbdev kernel boot argument remaindersLiav A
2022-08-11LibTimeZone: Update to TZDB version 2022bTimothy Flynn
https://mm.icann.org/pipermail/tz-announce/2022-August/000071.html
2022-08-09CI: Enable downloading the Azure remote data cache for Fuzzer buildsTimothy Flynn
This cache was disabled in 3127454 because it wasn't needed and there was a race between the builders for this cache. Then commit 0c95d99 started fuzzing the generated Unicode / TZDB data. Since then, we've been pulling this data from the live servers instead of Azure's cache.
2022-08-09CI: Add a restoration key for Azure's remote data cachesTimothy Flynn
We do a similar trick for the compiler cache. This allows each builder to separately push their local data cache (if it changed) while pulling a shared cache, without the race outlined in commit 3127454. This is needed for a subsequent commit which will enable this cache for Fuzzer builds.
2022-08-08Kernel/FileSystem: Use a new debug flag for SysFS debug messagesLiav A
2022-08-07LibWeb: Parse rect style valueTom
Add ability to parse a rect when it is used as the value of a style property.
2022-08-05LibJS: Let Shape store a Realm instead of a GlobalObjectAndreas Kling
This is a cautious first step towards being able to create JS objects before a global object has been instantiated.
2022-07-30Meta: Set has_unscopable_member for interfaces include mixins with themMacDue
2022-07-29LibWeb: Skip whitespace when parsing IDL non-interface entitiesSam Atkins
This stops the WrapperGenerator freaking out when an IDL file starts with a comment or whitespace. :^)
2022-07-22LibJS+LibUnicode: Generate a set of default DateTimeFormat patternsTimothy Flynn
This isn't called out in TR-35, but before ICU even looks at CLDR data, it adds a hard-coded set of default patterns to each locale's calendar. It has done this since 2006 when its DateTimeFormat feature was first created. Several test262 tests depend on this, which under ECMA-402, falls into "implementation defined" behavior. For compatibility, we can do the same in LibUnicode.