summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-08-17Kernel/ProcFS: Avoid String allocation when traversing /proc/PID/fd/Andreas Kling
2021-08-17Kernel: Add a little explainer comment to ListedRefCountedAndreas Kling
2021-08-17Kernel: Port Inode to ListedRefCountedAndreas Kling
This consolidates the lock+list combo into a SpinLockProtectedValue and closes yet another unref() race. :^)
2021-08-17Kernel: Remove unused VMObject::is_contiguous()Andreas Kling
2021-08-17Kernel+Userland: Remove global futexesAndreas Kling
We only ever use private futexes, so it doesn't make sense to carry around all the complexity required for global (cross-process) futexes.
2021-08-17Kernel: Port VMObject to ListedRefCountedAndreas Kling
The VMObject class now manages its own instance list (it was previously a member of MemoryManager.) Removal from the list is done safely on the last unref(), closing a race window in the previous implementation. Note that VMObject::all_instances() now has its own lock instead of using the global MM lock.
2021-08-17Kernel/DevPtsFS: Avoid String allocation during directory traversalAndreas Kling
Use a StringBuilder to generate a temporary string buffer with the slave PTY names. (This works because StringBuilder has 128 bytes of inline stack capacity before it does any heap allocations.)
2021-08-17Kernel: Convert SlavePTY all-instances HashTable to an IntrusiveListAndreas Kling
This simplifies the DevPtsFS implementation somewhat, as it no longer requires SlavePTY to register itself with it, since it can now simply use the list of SlavePTY instances.
2021-08-17Kernel: Port Thread to ListedRefCountedAndreas Kling
2021-08-17Kernel: Add ListedRefCounted<T> template classAndreas Kling
This class implements the emerging "ref-counted object that participates in a lock-protected list that requires safe removal on unref()" pattern as a base class that can be inherited in place of RefCounted<T>.
2021-08-17Kernel: Customize File::unref() and make it virtualAndreas Kling
Make File inherit from RefCountedBase and provide a custom unref() implementation. This will allow subclasses that participate in lists to remove themselves in a safe way when being destroyed.
2021-08-17Kernel/DevPtsFS: Add tightly typed DevPtsFSInode::fs()Andreas Kling
2021-08-17AudioApplet: Persist settings and respect audio server settingskleines Filmröllchen
The audio applet uses the user configuration file "AudioApplet.ini" to persist its settings, currently only whether the audio percentage should be shown. Since the audio server now may have specific settings when it starts, the audio applet respects them by reading these same settings once when it starts. Therefore, the audio server settings are not immediately overridden by the audio applet defaults, as was the case before this change. A minor change was done to the way that the audio volume is calculated; doubles are now used.
2021-08-17AudioServer: Persist audio settings with a config filekleines Filmröllchen
AudioServer loads its settings, currently volume and mute state, from a user config file "Audio.ini". Additionally, the current settings are stored every ten seconds, if necessary. This allows for persistent audio settings in between boots.
2021-08-16LibJS: Correctly handle Unicode characters in JS source textdavidot
Also recognize additional white space characters.
2021-08-16LibJS: Disallow standalone super expressiondavidot
2021-08-16LibJS: Handle '++' and '--' more correctly within expressiondavidot
2021-08-16LibJS: Check that 'let' is followed by declaration before matching itdavidot
Since 'let' is a valid variable name (in non-strict mode) let may not be the start of a declaration but just an identifier.
2021-08-16LibJS: Add optional extra strict checks in parse_binding_patterndavidot
2021-08-16LibJS: Tighten default values in formal parameter parsingdavidot
Disallow default parameter for rest parameters. Disallow yield expressions as default values.
2021-08-16LibJS: Allow yielding a classdavidot
2021-08-16LibJS: Treat yield as an identifier in more non-generator contextsdavidot
And disallow some cases where we are in a generator context.
2021-08-16LibJS: Add more duplicated declarations detectiondavidot
This is a small step in the right direction although the amount of different checks is becoming unsustainable. In the future we probably want to have the current_scope handle all declarations.
2021-08-16LibJS: Be more strict about the lhs of a for in/of loopdavidot
This is not entirely correct as really Object- and ArrayExpressions are not allowed but that requires a bigger refactoring of for statement parsing.
2021-08-16LibJS: Force the lexer to parse a regex when expecting a statementdavidot
2021-08-16LibJS: Treat arrow expression as function and stop parsing afterdavidot
2021-08-16LibJS: Make functions reset break and continue contextdavidot
2021-08-16LibJS: Allow class methods named "get", "set" or "static"davidot
2021-08-16LibJS: Allow labelled functions in certain contextsdavidot
Also disallow duplicated labels.
2021-08-16LibJS: Fix that a windows-style new line was not escaped properlydavidot
2021-08-17LibAudio: Fix overflow on 24-bit FLAC LPC datakleines Filmröllchen
When computing sample values from a linear predictor, the repeated multiplication and addition can lead to very large values that may overflow a 32-bit integer. This was never discovered with 16-bit FLAC test files used to create and validate the first version of the FLAC loader. However, 24-bit audio, especially with large LPC shifts, will regularly exceed and overflow i32. Therefore, we now use 64 bits temporarily. If the resulting value is too large for 32 bits, something else has gone wrong :^) This fixes playback noise on 24-bit FLACs.
2021-08-17LibAudio: Rescale integer samples correctly in FLAC loaderkleines Filmröllchen
The FLAC samples are signed, so we need to rescale them not by their bit depth, but by half of the bit depth. For example, a 24-bit sample extends from -2^23 to 2^23-1, and therefore needs to be rescaled by 2^23 to conform to the [-1, 1] double sample range.
2021-08-17LibAudio: Use size_t in loopskleines Filmröllchen
This is more idiomatic :^)
2021-08-16Kernel: Make makedev()/minor()/major() staticItamar
This was originally done in 7274037 and for some reason reverted in 740140a. This avoids "multiple definitions" link errors and fixes the libuv port.
2021-08-16LibWeb: Replace is_inherited_property() with generated codeSam Atkins
We already include the inheritance for each property in Properties.json, so made sense to use that instead of a list in StyleResolver. Added `inherited: true` to a couple of properties to match the previous code's behavior. One of those had a FIXME which I've moved to the JSON file, which is hacky, but it works.
2021-08-16Base: Associate obj files with 3DFileViewerTetsui Ohkubo
With this change, a user can open .obj files from FileManager.
2021-08-16LibJS: Add missing spec link to YearMonthFromFieldsLinus Groh
2021-08-16LibJS: Implement Temporal.PlainDate.prototype.toPlainMonthDay()Linus Groh
2021-08-16LibJS: Implement Temporal.Calendar.prototype.monthDayFromFields()Linus Groh
2021-08-16Userland: Add as-user execution to the pls utilitypyunbiwi
Commands may be executed as a specific user by passing the user's UID to the '-u' flag in pls.
2021-08-16Kernel: Avoid enumerating all the fds to find a specific one in procfsAli Mohammad Pur
2021-08-16Kernel: Add a Process::FileDescriptions::get_if_valid(index) APIAli Mohammad Pur
Note that this is not the same as ::at(index), which has a different precondition ("allocated" vs "valid").
2021-08-16LibJS: Implement Temporal.Calendar.prototype.fields()Linus Groh
2021-08-16CI: Remove NO_FUZZ Lagom builds from GitHub ActionsTimothy Flynn
2021-08-16CI: Build and test Lagom (non-fuzzer) on AzureTimothy Flynn
2021-08-16LibJS: Implement Temporal.PlainDate.prototype.toPlainYearMonth()Linus Groh
2021-08-16LibJS: Implement Temporal.Calendar.prototype.yearMonthFromFields()Linus Groh
2021-08-16Kernel: Don't hold thread list lock while invoking ~Thread()Andreas Kling
There is no need for this, and it can cause deadlocks if ~Thread() ends up doing something else that requires a lock (e.g ~Process())
2021-08-16Kernel: Use ProtectedValue for VirtualFileSystem::m_mountsAndreas Kling
This is what VirtualFileSystem::m_lock was actually guarding, and wrapping it in a ProtectedValue makes it so much more obvious how it all works. :^)
2021-08-16LibTLS: Add DHE_RSA AES GCM cipher suitesSamuel Bowman
This adds the following cipher suites: * DHE_RSA_WITH_AES_128_GCM_SHA256 * DHE_RSA_WITH_AES_256_GCM_SHA384