summaryrefslogtreecommitdiff
path: root/Meta
AgeCommit message (Collapse)Author
2022-02-01Build: Remove hardcoded executable pathLucas CHOLLET
Let which find the fuse2fs executable path for us, as it is not in `/usr/sbin` in every distro.
2022-01-31LibUnicode: Download and parse {Grapheme,Word,Sentence} break propsIdan Horowitz
2022-01-31Everywhere: Update copyrights with my new serenityos.org e-mail :^)Timothy Flynn
2022-01-31LibWeb: Add initial support for passing union types into IDL functionsLuke Wilde
This currently does not accept ArrayBuffer, DataView, TypedArrays, callback functions, nullable types, dictionaries, records and frozen arrays.
2022-01-31LibWeb: Add support for passing sequences into IDL functionsLuke Wilde
2022-01-31LibTimeZone: Use new generator util to generate all time zonesTimothy Flynn
Added the call to generate_available_values(), then realized it is the exact same as the existing, manually written implementation. So let's use the new utility.
2022-01-31LibUnicode: Generate a list of available currenciesTimothy Flynn
2022-01-31LibUnicode: Generate a list of available numbering systemsTimothy Flynn
2022-01-31LibUnicode: Generate a list of available calendarsTimothy Flynn
2022-01-29LibUnicode: Fill in case-first and numeric BCP47 keywordsTimothy Flynn
Unlike other BCP47 keywords that we are parsing, these only appear in the BCP47 XML file itself within the CLDR. The values are very simple though, so just hard code them until the Unicode org re-releases the CLDR with BCP47: https://unicode-org.atlassian.net/browse/CLDR-15158
2022-01-29Kernel: Stop using HashMap in MutexIdan Horowitz
This commit removes the usage of HashMap in Mutex, thereby making Mutex be allocation-free. In order to achieve this several simplifications were made to Mutex, removing unused code-paths and extra VERIFYs: * We no longer support 'upgrading' a shared lock holder to an exclusive holder when it is the only shared holder and it did not unlock the lock before relocking it as exclusive. NOTE: Unlike the rest of these changes, this scenario is not VERIFY-able in an allocation-free way, as a result the new LOCK_SHARED_UPGRADE_DEBUG debug flag was added, this flag lets Mutex allocate in order to detect such cases when debugging a deadlock. * We no longer support checking if a Mutex is locked by the current thread when the Mutex was not locked exclusively, the shared version of this check was not used anywhere. * We no longer support force unlocking/relocking a Mutex if the Mutex was not locked exclusively, the shared version of these functions was not used anywhere.
2022-01-29IPCCompiler: Don't loop endlessly on nameless parametersItamar
Previously, given a malformed IPC call declaration, where a parameter does not have a name, the IPCCompiler would spin endlessly while consuming more and more memory. This is because it parses the parameter type incorrectly (it consumes superfluous characters into the parameter type). An example for such malformed declaration is: tokens_info_result(Vector<GUI::AutocompleteProvider::TokenInfo>) =| As a temporary fix, this adds VERIFY calls that would fail if we're at EOF when parsing parameter names. A real solution would be to parse C++ parameter types correctly. LibCpp's Parser could be used for this task.
2022-01-28Meta: Set correct boot drive when running with SERENITY_NVME_ENABLEIdan Horowitz
2022-01-28Meta: Check if gdu is part of GNU coreutilsMika Sundland
2022-01-27LibUnicode: Parse and generate relative-time format patternsTimothy Flynn
Relative-time format patterns are of one of two forms: * Tensed - refer to the past or the future, e.g. "N years ago" or "in N years". * Numbered - refer to a specific numeric value, e.g. "in 1 year" becomes "next year" and "in 0 years" becomes "this year". In ECMA-402, tensed and numbered refer to the numeric formatting options of "always" and "auto", respectively.
2022-01-27LibUnicode: Create a nearly empty generator for relative-time formattingTimothy Flynn
This sets up the generator plumbing to create the relative-time data files. This data could probably be included in the date-time generator, but that generator is large enough that I'd rather put this tangentially related data in its own file.
2022-01-27LibUnicode: Remove extraneous semi-colons at end of generator functionsTimothy Flynn
2022-01-27LibUnicode: Generate per-locale minimum grouping digit valuesTimothy Flynn
Previously, we were breaking up digits into groups without regard for the locale's minimumGroupingDigits value in the CLDR. This value is 1 in most locales, but is 2 in locales such as pl-PL. What this means is that in those locales, the group separator should only be inserted if the thousands group has at least 2 digits. So 1000 is formatted as "1,000" in en-US, but "1000" in pl-PL. And 10000 is "10,000" in en-US and "10 000" in pl-PL.
2022-01-26LibEDID: Do not check if ${PNP_IDS_EXPORT_PATH} exists in pnp_ids.cmakeTimothy Flynn
This check isn't needed because download_file() will check if it exists already before doing the download. Worse, it would prevent the generator target from being defined if the file existed, which then made CMake not realize the generated files were important and delete them.
2022-01-26LibEDID: Rename the downloaded PNP IDs fileTimothy Flynn
After fixing the CMake file to use the correct paths, users may have had to manually remove the existing downloaded pnp.ids.html for CMake to re- run the generator. So this change renames the downloaded file to pnp_ids.html to ensure everyone picks up that change without manual intervention.
2022-01-26LibEDID: Use correct paths for LibEDID generated filesTimothy Flynn
Code generators that generate their files for both Lagom and Serenity have a blob in their CMake file like this: set(TIME_ZONE_DATA_HEADER LibTimeZone/TimeZoneData.h) set(TIME_ZONE_DATA_IMPLEMENTATION LibTimeZone/TimeZoneData.cpp) set(TIME_ZONE_META_TARGET_PREFIX LibTimeZone_) if (CMAKE_CURRENT_BINARY_DIR MATCHES ".*/LibTimeZone") # Serenity build. set(TIME_ZONE_DATA_HEADER TimeZoneData.h) set(TIME_ZONE_DATA_IMPLEMENTATION TimeZoneData.cpp) set(TIME_ZONE_META_TARGET_PREFIX "") endif() LibEDID generates files only for Serenity, but was using the Lagom build version of the _HEADER, _IMPLEMENTATION, and _PREFIX variables. Thus if pnp_ids.cmake was ever touched, the following error would be raised: Userland/Libraries/LibEDID/EDID.cpp:18:18: fatal error: LibEDID/PnpIDs.h: No such file or directory 18 | # include <LibEDID/LibEDID/PnpIDs.h> Use the Serenity paths in pnp_ids.cmake and in the #include within LibEDID itself.
2022-01-26Meta: Download PNP ID data with fallible download functionTimothy Flynn
2022-01-26Meta: Download TZDB data with fallible download functionTimothy Flynn
2022-01-26Meta: Download UCD and CLDR data with fallible download functionTimothy Flynn
2022-01-26Meta: Add a CMake function to download remote files during the buildTimothy Flynn
This function will handle download failures. It doesn't support hashing for integrity yet, but if the download times out or otherwise fails, the build itself will fail. But default, file(DOWNLOAD) in CMake doesn't fail the build; we must pass in and check a STATUS variable.
2022-01-25Tests+LibJS: Add very simple bytecode LibJS testsdavidot
These tests are not meant as a replacement to test-js with the -b option but are meant to test simple cases until that works. Before this it was very easy to accidentally break bytecode since no tests were run in bytecode mode. This hopefully makes it easier to spot such regressions :^).
2022-01-26Meta: Correct the PNP ID download conditionAli Mohammad Pur
`PNP_IDS_PATH` does not exist, set this to `PNP_IDS_EXPORT_PATH` to avoid redownloading the database every reconfigure.
2022-01-25LibJS+LibUnicode: Convert Intl.ListFormat to use Unicode::StyleTimothy Flynn
Remove ListFormat's own definition of the Style enum, which was further duplicated by a generated ListPatternStyle enum with the same values.
2022-01-25LibTimeZone: Handle time zones which begin the year in daylight savingsTimothy Flynn
2022-01-25LibTimeZone: Add an API to retrieve both daylight and standard offsetsTimothy Flynn
This API will also include the formatted name of the time zone, with respect for DST (e.g. EST vs EDT for America/New_York).
2022-01-25LibTimeZone: Slightly refactor the generated DST rule finding methodTimothy Flynn
This just splits up the method to find the active DST rule for specified time and time zone. This is to allow re-using the now split-off function in upcoming commits.
2022-01-25LibTimeZone: Parse and generate time zone abbreviation format stringsTimothy Flynn
For example, today, America/New_York has the format string "E%sT" and uses US DST rules. Those rules indicate the %s should be replaced by a "D" in daylight time and "S" in standard time.
2022-01-25AK: Standardize the behaviour of GenericLexer::consume_until overloadsIdan Horowitz
Before this commit all consume_until overloads aside from the Predicate one would consume (and ignore) the stop char/string, while the Predicate overload would not, in order to keep behaviour consistent, the other overloads no longer consume the stop char/string as well.
2022-01-24Toolchain: Add support for building the userland with the mold linkerDaniel Bertalan
This commit adds support for building the SerenityOS userland with the new [mold linker]. This is not enabled by default yet; to link using mold, run the `Toolchain/BuildMold.sh` script to build the latest release of mold, and set the `ENABLE_MOLD_LINKER` CMake variable to ON. This option relies on toolchain support that has been added just recently, so you might need to rebuild your toolchain for mold to work. [mold linker]: https://github.com/rui314/mold
2022-01-23Meta+LibEDID: Download and generate the PNP ID databaseTom
This downloads the UEFI's published PNP ID database and generates a lookup table for use in LibEDID. The lookup table isn't optimized at all, but this can be easily done at a later point if needed.
2022-01-23LibJS+LibIMAP: Use the new Optional<U>(Optional<T>) constructorIdan Horowitz
These look much nicer than these repeated ternaries :^)
2022-01-23Everywhere: Convert VM::call() to JS::call()mjz19910
2022-01-23timezone: Add a command line utility to set the system time zoneTimothy Flynn
2022-01-23LibTimeZone: Add an API to retrieve a list of all known IANA time zonesTimothy Flynn
2022-01-23LibHTTP+AK: Rename CNETWORKJOB_DEBUG to NETWORKJOB_DEBUGNico Weber
2022-01-23LibHTTP+AK: Rename CHTTPJOB_DEBUG to HTTPJOB_DEBUGNico Weber
2022-01-22CI: Fail Lagom linters step as soon as any linter failsIdan Horowitz
This prevents linters from covering the failure of previous linters by overwriting the error code that Azure reads at the end of the step.
2022-01-22Utilities+Lagom: Remove test-cryptoNico Weber
After 4d5ffd364a3, Tests/{LibCrypto,LibTLS} test the same things and test-crypto has been redundant since then.
2022-01-22RequestServer+AK: Move happy-path logging behind REQUESTSERVER_DEBUGNico Weber
vdbgln() was responsible for ~10% of samples on pv's flamegraph for RequestServer (under request_did_finish) when loading github.com in Browser and recording a whole-system profile. This makes that almost completely disappear.
2022-01-22LibJS: Implement ImportCall and HostImportModuleDynamicallydavidot
This allows us to load modules from scripts. This can be dangerous as it can load arbitrary files. Because of that it fails and throws by default. Currently, only js and JavaScriptTestRunner enable the default hook. This also adds tests to test-js which test module code. Because we form a spec perspective can't "enter" a module this is the easiest way to run tests without having to modify test-js to have special cases for modules. To specify modules in test-js we use the extension '.mjs' this is to ensure the files are not executed. We do still want to lint these files so the prettier scripts have changed to look for '.mjs' files as well.
2022-01-22Meta: Add JS_MODULE_DEBUG define flagdavidot
2022-01-22LibJS: Refactor interpreter to use Script and Source Text ModulesLuke Wilde
This also refactors interpreter creation to follow InitializeHostDefinedRealm, but I couldn't fit it in the title :^) This allows us to follow the spec much more closely rather than being completely ad-hoc with just the parse node instead of having all the surrounding data such as the realm of the parse node. The interpreter creation refactor creates the global execution context once and doesn't take it off the stack. This allows LibWeb to take the global execution context and manually handle it, following the HTML spec. The HTML spec calls this the "realm execution context" of the environment settings object. It also allows us to specify the globalThis type, as it can be different from the global object type. For example, on the web, Window global objects use a WindowProxy global this value to enforce the same origin policy on operations like [[GetOwnProperty]]. Finally, it allows us to directly call Program::execute in perform_eval and perform_shadow_realm_eval as this moves global_declaration_instantiation into Interpreter::run (ScriptEvaluation) as per the spec. Note that this doesn't evalulate Source Text Modules yet or refactor the bytecode interpreter, that's work for future us :^) This patch was originally build by Luke for the environment settings object change but was also needed for modules. So I (davidot) have modified it with the new completion changes and setup for that. Co-authored-by: davidot <davidot@serenityos.org>
2022-01-22LibAudio: Convert FlacLoader to use new Core::Stream APIs :^)kleines Filmröllchen
For this change to work "easily", Loader can't take const ByteBuffer's anymore, which is fine for now.
2022-01-21adjtime: Port to LibMainmjz19910
2022-01-20Userland: Add horizontal mouse scroll supportDmitry Petrov