1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 19:37:34 +00:00
Commit graph

22042 commits

Author SHA1 Message Date
davidot
4152409ac5 LibJS: Make Array.prototype.concat generic 2021-06-14 09:57:06 +01:00
davidot
2ef9df989f LibJS: Make Array.prototype.reverse generic 2021-06-14 09:57:06 +01:00
davidot
516f6240e8 LibJS: Add additional Array.prototype.reverse tests 2021-06-14 09:57:06 +01:00
davidot
d723c01af7 LibJS: Make Array.prototype.unshift generic 2021-06-14 09:57:06 +01:00
davidot
7c1e2adf8a LibJS: Make Array.prototype.shift generic 2021-06-14 09:57:06 +01:00
Idan Horowitz
690eb3bb8a LibJS: Add support for hex, octal & binary big integer literals 2021-06-14 01:45:04 +01:00
Idan Horowitz
2ad2e055e2 LibCrypto: Add {Signed,Unsigned}BigInteger::from_base{2, 8, 16} helpers
These can be used to create BigInteger instances from non-decimal
number strings.
2021-06-14 01:45:04 +01:00
Idan Horowitz
e4e6e03364 LibJS: Add tests for DataView.prototype getters and setters 2021-06-14 01:45:04 +01:00
Idan Horowitz
d7a70eb77c LibJS: Add all of the DataView.prototype.set* methods 2021-06-14 01:45:04 +01:00
Idan Horowitz
c54b9a6920 LibJS: Add all of the DataView.prototype.get* methods 2021-06-14 01:45:04 +01:00
Idan Horowitz
e4d267d4fb LibJS: Add the DataView built-in object 2021-06-14 01:45:04 +01:00
Linus Groh
5b2255291e LibJS: Make a couple of %TypedArray%.prototype properties accessors
Also use JS_DEFINE_NATIVE_GETTER and not JS_DEFINE_NATIVE_FUNCTION for
their function definitions.
2021-06-13 21:33:41 +01:00
Linus Groh
5c1af1d6f7 LibJS: Make Symbol.prototype.description an accessor 2021-06-13 21:33:41 +01:00
Linus Groh
b121837898 LibJS: Make Set.prototype.size an accessor
Also fix its attributes, should be just configurable.
2021-06-13 21:33:41 +01:00
Linus Groh
3ed5a0c68d LibJS: Make a couple of RegExp.prototype properties accessors 2021-06-13 21:33:41 +01:00
Linus Groh
83d3175b13 LibJS: Make ArrayBuffer.prototype.byteLength an accessor 2021-06-13 21:33:41 +01:00
Linus Groh
c6c0c6a61a LibJS: Add two missing missing ECMA-262 section/title/URL comments 2021-06-13 21:33:41 +01:00
Linus Groh
4f6aa38434 LibJS: Don't repeat attributes in {Boolean,Symbol}Prototype 2021-06-13 21:33:41 +01:00
Andreas Kling
3ed6a3fea8 Calculator: Fix offensive button misalignment
The UI of this application is still quite bad/uneven, but this at
least fixes the most egregious button misalignment.
2021-06-13 21:48:15 +02:00
Andreas Kling
7d90455fad Browser: Fix build breakage from 29cce65 2021-06-13 21:22:11 +02:00
Jelle Raaijmakers
30abfc2b21 Kernel: Pass absolute path to shebang interpreter
When you invoke a binary with a shebang line, the `execve` syscall
makes sure to pass along command line arguments to the shebang
interpreter including the path to the binary to execute.

This does not work well when the binary lives in $PATH. For example,
given this script living in `/usr/local/bin/my-script`:

  #!/bin/my-interpreter
  echo "well hello friends"

When executing it as `my-script` from outside `/usr/local/bin/`, it is
executed as `/bin/my-interpreter my-script`. To make sure that the
interpreter can find the binary to execute, we need to replace the
first argument with an absolute path to the binary, so that the
resulting command is:

  /bin/my-interpreter /usr/local/bin/my-script
2021-06-13 21:19:51 +02:00
Jelle Raaijmakers
26250779d1 Kernel: Also move() the shebang path in execve 2021-06-13 21:19:51 +02:00
Marcus Nilsson
4faff69974 Browser: Add download finished graphics to download widget
Not the prettiest, but visually indicates that the download has finished
successfully.
2021-06-13 20:55:58 +02:00
Marcus Nilsson
29cce65d2f Browser: Add close on finished checkbox to download widget
Let the user choose if they want the download widget to close when
finished, also save the users choice for future downloads.
2021-06-13 20:55:58 +02:00
Max Trussell
b4da228ea5
LibGUI: Make "Return" after tab return to original column in TableView 2021-06-13 19:46:08 +01:00
Sam Atkins
364d728e66 Solitaire: Disable filling with background color during end animation
This fixes #7792.

The visual glitches with card corners, and the screen-clear when
opening a menu, were both caused by the widgets having
`fill_with_background_color` set. We need that set most of the time,
so we just disable it for the duration of the game-over animation.

Also resove a FIXME that no longer applies. :^)
2021-06-13 19:29:52 +01:00
Sam Atkins
679f831451 Solitaire: Only start timer when a move happens
Previously, the timer started if you clicked within the game area,
whether that was on a card or not. Now, we only start when you click
on a card or otherwise attempt a move.

As a bonus, we now immediately update the status bar time indicator
on game start, instead of having to wait until 1 second has elapsed.
2021-06-13 19:29:52 +01:00
Sam Atkins
8ee447b718 Solitaire: Prevent undo when the game is over 2021-06-13 19:29:52 +01:00
Sam Atkins
cf504ccc6a Solitaire: Allow automatic moves to end the game and animate
Previously, if a tab-move moved all the remaining cards to the
foundations, the game would not notice until you moved a card
away and then back again.

I had to add a 1-frame delay to starting the animation, so that it
would have time to re-paint the foundation in that case.
2021-06-13 19:29:52 +01:00
Andreas Kling
5eef07d232 LibJS: Avoid lots of string-to-int during global object construction
We were doing a *lot* of string-to-int conversion while creating a new
global object. This happened because Object::put() would try to convert
the property name (string) to an integer to see if it refers to an
indexed property.

Sidestep this issue by using PropertyName for the CommonPropertyNames
struct on VM (vm.names.foo), and giving PropertyName a flag that tells
us whether it's a string that *may be* a number.

All CommonPropertyNames are set up so they are known to not be numbers.
2021-06-13 19:11:29 +02:00
Andreas Kling
53a8a11973 LibJS: Make StringOrSymbol always be FlyString in the string case
This makes equality checking O(1) instead of O(n).
2021-06-13 19:11:29 +02:00
Andreas Kling
cd12b182ca AK: Add FlyString::from_fly_impl()
This allows you to create a FlyString directly from a known-fly
StringImpl instance.
2021-06-13 19:11:29 +02:00
Andreas Kling
240d2f88d3 LibJS: Convert PropertyName and StringOrSymbol to east-const style 2021-06-13 19:11:29 +02:00
Andreas Kling
b458090d14 LibJS: Don't generate unused HeapBlock names on non-SerenityOS systems
These are just ignored by the BlockAllocator anyway.
2021-06-13 19:11:29 +02:00
Andreas Kling
095accd2b2 LibJS: Add a bunch of fast_is<T> to avoid slow RTTI in hot code 2021-06-13 19:11:29 +02:00
Andreas Kling
39ad705c13 LibJS: Use the new is_ascii_foo() helpers from AK
These constexpr helpers generate nicer code than the LibC ctype.h
variants, so let's make use of them. :^)
2021-06-13 19:11:29 +02:00
Gunnar Beutner
d476144565 Userland: Allow building SerenityOS with -funsigned-char
Some of the code assumed that chars were always signed while that is
not the case on ARM hosts.

Also, some of the code tried to use EOF (-1) in a way similar to what
fgetc() does, however instead of storing the characters in an int
variable a char was used.

While this seemed to work it also meant that character 0xFF would be
incorrectly seen as an end-of-file.

Careful reading of fgetc() reveals that fgetc() stores character
data in an int where valid characters are in the range of 0-255 and
the EOF value is explicitly outside of that range (usually -1).
2021-06-13 18:52:58 +02:00
Adam Hodgen
6ab48d612a Documentation: Move Ubuntu/Debian specific build instructions
Ubuntu/Debian specific instructions should live under the
Ubuntu/Debian header
2021-06-13 17:16:03 +01:00
Adam Hodgen
9bc0017499 Documentation: Fix QEMU 5 Ubuntu version confusion
PR #7970 added a line clarifying the requirement for QEMU 5.
Unfortunately, this location this line was added changed the meaning
of the following line, referencing the availability of GCC in Ubuntu
20.04.

QEMU 5 is not available in Ubuntu 20.04, so this change is incorrect,
as well as misleading.
2021-06-13 17:16:03 +01:00
Jelle Raaijmakers
ba7e025320 Ports: Add Composer 2021-06-13 17:06:45 +01:00
Jelle Raaijmakers
3fa5b27931 Utilites: Implement unzip -q 2021-06-13 17:05:48 +01:00
Jelle Raaijmakers
c247d7a662 Utilities: Change unzip -o option to -d
Other `unzip` implementations universally use `-d` to indicate the
output directory, so let's follow this convention.
2021-06-13 17:05:48 +01:00
Jelle Raaijmakers
ed62fc9a43 Ports: Update diffutils to version 3.7 2021-06-13 17:05:03 +01:00
Jelle Raaijmakers
10e8b99038 LibC: Make getopt modify argv again
A POSIX-compatibility fix was introduced in 64740a0214 to make the
compilation of the `diffutils` port work, which expected a
`char* const* argv` signature.

And indeed, the POSIX spec does not mention permutation of `argv`:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html

However, most implementations do modify `argv` as evidenced by
documentation such as:
https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic
    /LSB-Core-generic/libutil-getopt-3.html

  "The function prototype was aligned with POSIX 1003.1-2008 (ISO/IEC
   9945-2009) despite the fact that it modifies argv, and the library
   maintainers are unwilling to change this."

Change the behavior back to permutate `argc` to allow for the following
command line argument order to work again:

  unzip ./file.zip -o target-dir

Without this change, `./file.zip` in the example above would have been
ignored completely.
2021-06-13 17:05:03 +01:00
Luke
d72aeb2e1a LibJS: Rewrite Array.prototype.slice to be spec compliant
This makes it generic in the process (which is required by jQuery)
This fixes 19 test262 test cases :^)
2021-06-13 16:21:34 +01:00
sinmineryt
2e1a01a499
TextEditor: Don't allow opening directories
Previously it was possible to open a directory in the TextEditor
application. Like device files, these are now rejected with an error
message.
2021-06-13 12:38:07 +01:00
Dmitrii Ubskii
d5828dbecb HackStudio: Indicate git changes in the editor's gutter
"+" for added lines, "!" for changed, "-" for removed.
2021-06-13 12:33:15 +01:00
Dmitrii Ubskii
8501617fcb LibGUI+HackStudio: Make gutter a first class element
Gutter -- a space left of the text, before the ruler -- is not a part of
the ruler, nor should it be treated as such. This commit implements
gutter handling in LibGUI::TextEditor as part of mild cleaning up of the
gutter handling (breakpoint icons) in HackStudio's Editor.

This commit also enables separate theming of the gutter.
2021-06-13 12:33:15 +01:00
Linus Groh
920b4d730e
LibJS: Add missing ECMA-262 section/title/URL comments to Map 2021-06-13 12:20:21 +01:00
Apoorv Mishra
f32ab73acc
Meta: Fix QEMU version check in run.sh
The QEMU version check in `Meta/run.sh` fails on macOS because the BSD
version of `grep` does not support the `-P` option. Using `sed` instead.
2021-06-13 12:05:48 +01:00