Andreas Kling
4da3e5d91f
LibJS: Add naive implementation of eval() :^)
...
This parses and executes a code string in the caller's lexical scope.
2021-03-15 21:20:33 +01:00
Idan Horowitz
c9f25bca04
LibTextCodec: Make UTF16BEDecoder read only up to an even offset
...
Reading up to the end of the input string of odd length results in
an out-of-bounds read
2021-03-15 16:08:12 +01:00
Cesar Torres
2b269b27e7
LibGUI: Fix crash when text_in_range() was called on an empty document
2021-03-15 09:08:15 +01:00
Linus Groh
f59d58cb76
LibELF+LibTest: Fix serenity_install_sources() paths
...
Currently we end up with the following:
serenity/
AK/
...
Kernel/
...
Libraries/
LibELF/
LibTest/
Userland/
Libraries/
<all other libs>
...
2021-03-15 09:06:10 +01:00
Mițca Dumitru
32b9437c13
LibM: Add remainder{f, l}
...
These just forward their arguments to fmod, but I think that should be
fine.
2021-03-14 21:43:08 +01:00
Mițca Dumitru
e4197b7854
LibM: Define HUGE_VAL{F,L} in terms of compiler builtins
2021-03-14 21:43:08 +01:00
Mițca Dumitru
e9533da0e7
LibM: Define MAXFLOAT
...
Looks like a POSIX extension
2021-03-14 21:43:08 +01:00
Mițca Dumitru
86ee9211be
LibM: Define FLT_EVAL_METHOD, float_t and double_t
2021-03-14 21:43:08 +01:00
Mițca Dumitru
1f1a4f488f
LibM: Declare ldexpl in math.h
...
It was already defined, but it wasn't declared in the header
2021-03-14 21:43:08 +01:00
Mițca Dumitru
93c554f6bd
LibM: Add the gamma family of functions
2021-03-14 21:43:08 +01:00
Mițca Dumitru
7aac174bc8
LibM: Organise math.h so it is less of a wall of functions
...
The categories are the same categories used by cppreference on its page
for numeric functions.
2021-03-14 21:43:08 +01:00
Mițca Dumitru
c9601cdee3
LibM: Implement the missing parts of the round family
2021-03-14 21:43:08 +01:00
Mițca Dumitru
03b2d30836
LibM: Add missing float and long double function variants
2021-03-14 21:43:08 +01:00
Linus Groh
202f855055
LibJS: Change non-ScriptFunction source string to "[native code]"
...
https://tc39.es/ecma262/#sec-function.prototype.tostring - this is how
the spec wants us to do it. :^)
Also change the function name behaviour to only provide a name for
NativeFunctions, which matches other engines - presumably to not expose
Proxy objects, and to prevent "function bound foo() { [native code] }".
2021-03-14 19:22:16 +01:00
Linus Groh
f9287fca1e
LibJS: Don't try to derive function source from ProxyObject
...
There are three JS::Function types that are not ScriptFunction:
NativeFunction, BoundFunction and ProxyObject. We were only checking for
the first two when determining whether to reconstruct the function's
source code, which was leading to a bad cast to ScriptFunction.
Since only ScriptFunction has the [[SourceText]] internal slot, I simply
swapped the branches here.
Fixes #5775 .
2021-03-14 19:22:16 +01:00
Idan Horowitz
02b4cb96f8
LibCompress: Decrease CanonicalCode's size on stack
...
This commit stores the bit codes as u16s instead of u32s as the
maximum code bit length in DEFLATE is 15.
2021-03-14 14:52:21 +01:00
Linus Groh
304e193836
LibJS: Fix some issues in RegExp.prototype[@@match]
...
- We were not passing the to_string()'d argument to the exec function
but the original argument
- We were leaking an empty value in two cases, which almost certainly
will crash something down the line
- We were not checking for exceptions after to_string() and get(), which
both may throw. If the getter is an accessor, it'll assert upon being
called with the VM already storing an exception.
2021-03-14 12:24:57 +01:00
Linus Groh
b68509569e
LibJS: Fix String.prototype.match() for non-string argument
...
This is supposed to pass the to_string()'d argument to @@match, not the
this value.
2021-03-14 12:24:57 +01:00
Linus Groh
32052b3198
LibJS: Fix flags check in regexp_create()
...
We need to check for undefined, not empty - otherwise it will literally
use "undefined" as the flags, which will fail (Invalid RegExp flag 'n').
2021-03-14 12:24:57 +01:00
Linus Groh
6d2d8d091f
LibJS: Add the same Object::invoke() overloads as VM::call()
2021-03-14 12:24:57 +01:00
Ben Wiederhake
430e7fb181
LibC: Rename feclearexcept{s,}
...
This will also help with making ports compile again :D
https://github.com/SerenityOS/serenity/pull/5762#issuecomment-798779561
2021-03-14 11:30:38 +01:00
Luke
7427e3a8a6
LibTextCodec: Fix IBM666 => IBM866 typo
2021-03-14 11:27:52 +01:00
Idan Horowitz
7e587a615e
LibCompress: Handle literal only lz77 streams in DeflateCompressor
...
Very incompressible data could sometimes produce no backreferences
which would result in no distance huffman code being created (as it
was not needed), so VERIFY the code exists only if it is actually
needed for writing the stream.
2021-03-14 11:05:35 +01:00
Andreas Kling
1db943e146
LibJS: Implement (mostly) String.prototype.match
...
JavaScript has a couple of different ways to run a regular expression
on a string. This adds support for one more. :^)
2021-03-14 11:04:50 +01:00
Idan Horowitz
b1e3176f9f
LibCompress: Replace goto with simple recursion in DeflateCompressor
...
This is just a bit easier on the eyes :^)
2021-03-13 23:50:07 +01:00
Linus Groh
caa8f3d3bf
LibM: Implement tanf() in terms of tan() with casts
...
Lazy, but it works for now. :^)
2021-03-13 22:44:16 +01:00
Andreas Kling
33e3f0c71f
LibWeb: Expose barebones CSSStyleDeclaration to JavaScript
...
You can now access an element's inline style via Element.style.
The interface is not very capable yet though. :^)
2021-03-13 22:41:32 +01:00
Andreas Kling
0759f54bd3
LibWeb: Rename StyleDeclaration => CSSStyleDeclaration to match CSSOM
2021-03-13 22:41:32 +01:00
Idan Horowitz
7eab20bad0
LibTar: Implement TarOutputStream
...
This output stream creates gnu format tar archives
and currently only supports files and directories.
2021-03-13 20:07:25 +01:00
Idan Horowitz
6c1322bdc7
LibTar: Support ustar tar format
...
Since we ignore both the ustar prefix field and the gnu extended
header right now anyways, we can just accept both formats as the
rest of the header is exactly the same.
2021-03-13 20:07:25 +01:00
Idan Horowitz
135751c3a2
LibCompress: Implement GZip compression
...
This commit implements a stream compressor for the gzip
specification (RFC 1952), which is essentially a thin
wrapper around the DEFLATE compression format.
2021-03-13 20:07:25 +01:00
Idan Horowitz
bcbfa7db62
LibCompress: Implement DEFLATE compression
...
This commit adds a fully functional DEFLATE compression
implementation that can be used to implement compression
for higher level formats like gzip, zlib or zip.
A large part of this commit is based on Hans Wennborg's
great article about the DEFLATE and zip specifications:
https://www.hanshq.net/zip.html
2021-03-13 20:07:25 +01:00
AnotherTest
5a0ebdb109
LibLine: Treat DEL as backspace by default
...
This can come in handy when telneting in.
2021-03-13 19:34:25 +01:00
AnotherTest
745b0800be
LibLine: Don't try to print chars larger than 63 in caret form
...
Instead, mask them as `\xbb` so that e.g. DEL becomes `\x7f`.
Fixes #5752 .
2021-03-13 19:34:25 +01:00
Itamar
8688259ed9
LanguageServers/Cpp: Support jumping to declaration of preprocessor
...
.. definitions.
2021-03-13 10:17:02 +01:00
Itamar
7bf6eca9d8
LanguageServers/Cpp: Complete Preprocessor definitions
...
Preprocessor definitions now appear in the AutoComplete suggestions box
as well as in the Locator.
2021-03-13 10:17:02 +01:00
Itamar
5b22f6f45a
LibCpp: Parser no longer holds the program's source
...
After we moved to storing the text of each token in the token itself,
we no longer have to store the source of the program in the Parser.
This makes more sense because the parser should deal with tokens, not
with raw source code.
2021-03-13 10:17:02 +01:00
Itamar
8a102fe3ec
LibCpp: Implement Parser::text_in_range using text of tokens
...
It was previously implemented by directly iterating over the program's
source.
2021-03-13 10:17:02 +01:00
Itamar
97f2cd596b
LibCpp: Remove node_span_size, add index_of_node_at
2021-03-13 10:17:02 +01:00
Itamar
26d9485562
LibCpp: Store the text of a token as a StringView member
2021-03-13 10:17:02 +01:00
Itamar
5cd1c69b96
LibCpp: Access Cpp::Token members via getter functions
2021-03-13 10:17:02 +01:00
Itamar
d0b4f9cc0e
LibCpp: Move Cpp::Token to a separate file
2021-03-13 10:17:02 +01:00
Itamar
3658c4c567
LibCpp: Replace defined preprocessor values when parsing
2021-03-13 10:17:02 +01:00
Linus Groh
2d8362cceb
LibJS: Implement 'Relative Indexing Method' proposal (.at())
...
Still stage 3, but already implemented in major engines and unlikely to
change - there isn't much to change here anyway. :^)
See:
- https://github.com/tc39/proposal-relative-indexing-method
- https://tc39.es/proposal-relative-indexing-method/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at
2021-03-12 19:01:08 +01:00
Andreas Kling
d3f112f9a2
AK+LibCore: Remove empty files
2021-03-12 17:38:17 +01:00
Andreas Kling
ef1e5db1d0
Everywhere: Remove klog(), dbg() and purge all LogStream usage :^)
...
Good-bye LogStream. Long live AK::Format!
2021-03-12 17:29:37 +01:00
thankyouverycool
0fc81d23f4
LibGUI: Add variable padding and center bitmaps in TableViews
...
This lets us make nicer looking bitmap tables and fixes a content
rect issue in TreeView. Also makes key column highlighting optional
2021-03-12 09:59:03 +01:00
thankyouverycool
142ca4b818
WindowServer+LibGfx: Enumerate Disallow cursor
2021-03-12 09:59:03 +01:00
thankyouverycool
bc26d1093f
LibGUI: Clear inactive selections in DisplayOnly TextEditors
2021-03-12 09:59:03 +01:00
thankyouverycool
bf432f8a3a
LibGUI: Add opacity to ImageWidget
2021-03-12 09:59:03 +01:00