1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-24 16:47:42 +00:00
Commit graph

4164 commits

Author SHA1 Message Date
davidot
4485df1405 LibJS: Be more strict about reserved and special identifiers 2021-07-20 23:45:28 +02:00
davidot
2a61b90fef LibJS: Be less strict about 'use strict'
It is allowed to have (bogus) directives e.g.
'does nothing'; 'same'; 'use strict';
Should still trigger strict mode.
2021-07-20 23:45:28 +02:00
Andreas Kling
3652ab8b2a LibGUI: Tweak GUI::GroupBox title text position 2021-07-20 21:50:06 +02:00
Linus Groh
feea534dae LibJS/Tests: Fix typo in Temporal.Instant.compare test description 2021-07-20 17:57:50 +01:00
Linus Groh
99662975ed LibJS: Partially revert e3fa32b
This was causing some syntactically wrong inputs to crash and
subsequently broke CI (test262 parser tests).
2021-07-20 17:53:48 +01:00
Andreas Kling
e7136399a1 LibX86: Add INT1 instruction (needed for disassembly) 2021-07-20 18:05:05 +02:00
Alexander
d528c9c2ee LibWeb: Don't print JavaScript syntax error hints
This uses the new flag in print_errors to not print hints. This
decreases the load time of JavaScript heavy webpages with many errors
significantly.
2021-07-20 16:20:59 +02:00
Alexander
e3fa32b2ad LibJS: Optimize source_location_hint and add flag in print_errors
This optimizes the algorithm used in source_location_hint and adds a
flag to not print hints in print_errors.
2021-07-20 16:20:59 +02:00
Peter Elliott
2ce8cca7b5 LibC: Implement flock(2) using fcntl's F_SETLK
While flock is not a posix interface, it exists on linux and all BSDs as
far as I am aware.
2021-07-20 17:44:30 +04:30
Peter Elliott
3fa2816642 Kernel+LibC: Implement fcntl(2) advisory locks
Advisory locks don't actually prevent other processes from writing to
the file, but they do prevent other processes looking to acquire and
advisory lock on the file.

This implementation currently only adds non-blocking locks, which are
all I need for now.
2021-07-20 17:44:30 +04:30
Gunnar Beutner
60b52cfb02 Userland: Hardcode the x86_64 kernel base address for now 2021-07-20 15:12:19 +02:00
Ali Mohammad Pur
3184086679 LibLine: Avoid excessive write() syscalls when refreshing the display
Previously, we were generating the display update one character at a
time, and writing them one at a time to stderr, which is not buffered,
doing so caused one syscall per character printed which is s l o w (TM)
This commit makes LibLine write the update contents into a buffer, and
flush it after all the update is generated :^)
2021-07-20 11:55:42 +04:30
Ali Mohammad Pur
0f6654fef2 LibLine: Reset the suggestion page offset when finding the max length
Otherwise, something like shift+tab->tab->tab will mess up the page
contents (assuming that the max lengths in the pages are different).
2021-07-20 11:55:42 +04:30
Ariel Don
54bf6a7884 LibGUI: Add Ctrl-U to insert mode
While under insert mode, Ctrl-U deletes all characters between the first
non-blank character of the line and the cursor.

Implement delete_from_line_start_to_cursor() in TextEditor. Then, call
the method in VimEditingEngine via its pointer to an instance of
TextEditor.
2021-07-20 03:22:28 +02:00
Ariel Don
8230bf8944 LibGUI: Add Ctrl-H to insert mode
In Vim, Ctrl-H is effectively equivalent to backspace in insert mode, as
it deletes the previous character.

This commit implements method delete_previous_char() to TextEditor.
delete_char() already exists in EditingEngine, but it deletes the
next character rather than the previous. delete_previous_char() is then
called from within VimEditingEngine.
2021-07-20 03:22:28 +02:00
Ariel Don
808e5e813f LibGUI: Add Ctrl-W to insert mode
In Vim's insert mode, Ctrl-W deletes the word before the cursor, like
Ctrl-Backspace. Unlike Ctrl-Backspace, if only whitespace exists between
the end of the word and the cursor, the word will be deleted with the
whitespace.

To do so, this commit introduces two methods: delete_previous_word() for
TextEditor and first_word_before() for TextDocument, where the former
depends on the latter. delete_previous_word() is then called in
VimEditingEngine.
2021-07-20 03:22:28 +02:00
Andreas Kling
f5e914fb9f LibTTF+LibGfx: Make Gfx::Font::bold_variant() work for TTF fonts
There's no need for this to be a virtual, it's just a font database
lookup and can be done in the Font base class.
2021-07-20 02:48:29 +02:00
Andreas Kling
9f601fcbcf LibTTF+LibGfx: Improve vertical alignment of glyphs
Before this patch, some glyphs had a weird off-by-1 vertical position
which looked really jarring at small font sizes.

This was caused by glyph bitmaps having different heights from each
other. (Each glyph bitmap was minimally sized to fit only the glyph
itself, and then vertically positioned during the paint phase.
Since this vertical positioning was integer based, subpixel precision
was lost and things ended up looking wonky.)

Fix this by making all glyph bitmaps be the same height so we can blit
them at the same integer y position. We use the typographic ascent from
the OS/2 table to transform the glyph coordinates.

The end result is a huge improvement visually. :^)
2021-07-20 02:48:29 +02:00
Andreas Kling
e984200206 LibTTF: Parse OS/2 tables
The OS/2 table contains nice typographic ascent/descent information.
2021-07-20 02:48:29 +02:00
Andreas Kling
3b1e05f714 LibTTF: Don't choke on fonts with CompositeGlyfFlags::UseMyMetrics
This was preventing us from loading JetBrains Mono Regular with LibTTF.
2021-07-20 02:48:29 +02:00
Andreas Kling
808f1f63ff LibTTF: Minor const correctness fix in TTF rasterizer 2021-07-20 02:48:29 +02:00
Andreas Kling
d8f435fa50 LibTTF: Propagate glyph bitmap allocation failure in rasterizer 2021-07-20 02:48:28 +02:00
Andreas Kling
7b3a4f8281 LibTTF: Rename "raster" => "rasterize" 2021-07-20 02:48:28 +02:00
Andreas Kling
8070bbd442 LibTTF: Convert code to east-const style 2021-07-20 02:48:28 +02:00
Linus Groh
4983a972b0 LibDesktop: Add a RunInTerminal boolean field to app files
This is common enough to warrant its own setting by now - but it's also
partially a workaround. Since app files currently only support a single
executable path with no arguments, we resort to generating wrapper
scripts for port launchers with arguments - and then the executable is
that shell script. We also moved from manually specifying icon files to
embedding them in executables. As shell scripts can't have icons
embedded in them, a different solution is needed - this one solves the
common case of running a CLI program in a terminal, and still allows
embedding of icons in the executable itself as no shell script is
needed, meaning it will be shown in the taskbar and system menu.

The second use case of actually passing arguments to the executable
itself (and not just "Terminal -e ...") is not covered by this and still
requires an external script (meaning no icon for now), but I think that
can easily be solved by adding something like an "Arguments" field to
app files. :^)
2021-07-20 00:58:26 +01:00
Peter Elliott
b8f3441300 LibGUI: Add callback for screen rect change to Desktop.h
callbacks for screen rect changes can be added with
on_receive_screen_rects()
2021-07-19 18:21:40 +02:00
ls
fe7bacc2df File Manager: Differentiate between navigation and rename errors
Adds a new on_rename_error handler and renames the old on_error handler
to on_directory_change_error in FileSystemModel. The on_rename_error
handler creates a MessageDialog with the error message.
2021-07-19 18:20:34 +02:00
Itamar
941087ee25 LibGUI: Call did_update() from AutocompleteSuggestionModel::update()
This fixes an issue where the column widths of the AutocompleteBox did
not properly update after update_suggestions() was called.
2021-07-19 17:48:05 +02:00
Itamar
4a7be3f81c LibGUI: Remove column width limitation in AutocompleteProvider 2021-07-19 17:48:05 +02:00
Kenneth Myhra
afb47d1741 LibC: Add stub for iswprint
Without the declaration of iswprint libarchive will not compile.
2021-07-19 16:24:15 +02:00
Marcus Nilsson
bab83ecc95 LibGUI: Tighten invalidation rect for TabWidget
Previously the whole bar was repainted, there's no need to invalidate
past the last tab button.
2021-07-19 16:24:06 +02:00
Marcus Nilsson
b57f7def1f LibGUI: Don't invalidate scrollbar rect if disabled
No need to repaint if it's not scrollable, this saves a tiny bit of
repaint :)
2021-07-19 16:24:06 +02:00
Tobias Christiansen
439d955471 LibWeb: Implement justify-content for the FlexFormattingContext
This patch implements the algorithm for placing flex-items on a line
according to the specified justify-content property.
2021-07-19 18:47:09 +04:30
Tobias Christiansen
80a44c3891 LibWeb: Add parsing for the justify-content property 2021-07-19 18:47:09 +04:30
Hendiadyoin1
ed46d52252 Everywhere: Use AK/Math.h if applicable
AK's version should see better inlining behaviors, than the LibM one.
We avoid mixed usage for now though.

Also clean up some stale math includes and improper floatingpoint usage.
2021-07-19 16:34:21 +04:30
Hendiadyoin1
c5f6ba6e71 AK: Introduce Math.h
This is to implement constexpr template based implementations for
mathematical functions

This also changes math.cpp to use these implementations.

Also adds a fastpath for floating point trucation for values smaller
than the signed 64 bit limit.
2021-07-19 16:34:21 +04:30
Idan Horowitz
94322ea985 LibJS: Implement Temporal.PlainDate.prototype.calendar 2021-07-19 09:11:20 +01:00
Idan Horowitz
94e1324a67 LibJS: Implement Temporal.PlainDate.prototype[@@toStringTag] 2021-07-19 09:11:20 +01:00
Idan Horowitz
cc00ccec41 LibJS: Start implementing Temporal.PlainDate
This commit adds the PlainDate object itself, its constructor and
prototype (currently empty), and several required abstract operations.
2021-07-19 09:11:20 +01:00
Idan Horowitz
ff6ca0f02d LibCrypto: Add operator<= and operator>= to SignedBigInteger 2021-07-19 09:11:20 +01:00
Andrew Kaster
ff8429a749 LibTest/Utilities: Add method for TestRunner to print failed test names
If a test run has a lot of tests in it, and they fill up the terminal
buffer, it can be difficult to find out exactly which tests have failed
from your large test run. Make TestRunner print out an optional Vector
of failed test names at the end of the run, and have run-tests add each
failed or crashed test to a Vector it uses for this purpose.
2021-07-19 05:17:05 +04:30
Linus Groh
5516ad7158 LibJS: Rename Temporal.now => Temporal.Now
See:

- d0acb66
- 0097fdd
2021-07-19 00:59:26 +01:00
Linus Groh
d159938acc LibJS: Reflect recent editorial changes in the Temporal proposal
See:

- 2148441
- 08c04cc
- b77da58
2021-07-19 00:59:26 +01:00
Linus Groh
5c77885873 LibJS: Implement Temporal.Duration.from()
...with ParseTemporalDurationString currently TODO()'d.
2021-07-19 00:34:28 +01:00
Linus Groh
7355c23e17 LibJS: Fix TemporalDurationLike property order
The table is sorted alphabetically and supposed to be iterated in that
oder. Also move this to a templated lambda for later re-use with
different target structs and value types.
2021-07-19 00:34:28 +01:00
Linus Groh
152251f5a7 LibJS: Move Temporal AO structs/enum classes above function declarations
This is a bit closer to our usual style, and tidier.
2021-07-19 00:34:28 +01:00
Tom
a635ff4e60 Everywhere: Make tracking cpu usage independent from system ticks
This switches tracking CPU usage to more accurately measure time in
user and kernel land using either the TSC or another time source.
This will also come in handy when implementing a tickless kernel mode.
2021-07-18 22:08:26 +02:00
Tom
7e77a2ec40 Everywhere: Improve CPU usage calculation
As threads come and go, we can't simply account for how many time
slices the threads at any given point may have been using. We need to
also account for threads that have since disappeared. This means we
also need to track how many time slices we have expired globally.

However, because this doesn't account for context switches outside of
the system timer tick values may still be under-reported. To solve this
we will need to track more accurate time information on each context
switch.

This also fixes top's cpu usage calculation which was still based on
the number of context switches.

Fixes #6473
2021-07-18 22:08:26 +02:00
Ali Mohammad Pur
c85ab623c0 LibJS: Use a Utf8View on the subject if the regex has the unicode flag
This makes LibRegex behave (more) correctly with regards to matching
unicode code points.
2021-07-18 21:10:55 +04:30
Ali Mohammad Pur
f364fcec5d LibRegex+Everywhere: Make LibRegex more unicode-aware
This commit makes LibRegex (mostly) capable of operating on any of
the three main string views:
- StringView for raw strings
- Utf8View for utf-8 encoded strings
- Utf32View for raw unicode strings

As a result, regexps with unicode strings should be able to properly
handle utf-8 and not stop in the middle of a code point.
A future commit will update LibJS to use the correct type of string
depending on the flags.
2021-07-18 21:10:55 +04:30