Commit Graph

180 Commits

Author SHA1 Message Date
Dylan Conway
8f4a5903ab make sure vars can be hoisted in catch scope (#2847) 2023-05-10 23:55:27 -07:00
Jarred Sumner
5e0eedccb0 Fix test failure in scope order verification 2023-05-10 20:07:12 -07:00
Jarred Sumner
06a03df9a6 Fix assertion 2023-05-10 17:59:55 -07:00
Dylan Conway
e7d4f5fb16 use member from parent scope when hoisting (#2840) 2023-05-10 13:12:16 -07:00
Dylan Conway
1f8c60123d fix catch scope var declarations (#2839)
* use `catch_binding` kind and report errors

* make hash optional
2023-05-09 23:52:40 -07:00
Dylan Conway
232a25b77f add the class name to the current scope 2023-05-08 23:34:36 -07:00
Jarred Sumner
af1cd23b8c Add tracy (#2817)
* Add tracy

* RTLD

* Linux needs LD_PRELOAD

* More tracing

* Inline this

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-05-07 21:08:32 -07:00
Jarred Sumner
2aa4fba99d 💅 2023-05-06 19:09:14 -07:00
Jarred Sumner
cf4d13dcc0 Fixes #2811 2023-05-06 19:06:52 -07:00
Jarred Sumner
4708835ae6 [minifier] Rewrite equality check logic 2023-05-06 18:23:37 -07:00
Dylan Conway
8e18229d5d parse and visit catch body scope (#2796) 2023-05-04 08:21:33 -07:00
Jarred Sumner
243dfc177a Fix code splitting for server components 2023-05-03 23:48:18 -07:00
Jarred Sumner
101f0ee6ba re-enable our CJS optimization 2023-05-03 10:35:55 -07:00
Jarred Sumner
6bdc158e9c Use pretty 2023-05-02 11:58:14 -07:00
Jarred Sumner
c5df4e9477 Compress let f; f=123 => let f = 123; 2023-05-01 21:00:51 -07:00
Jarred Sumner
b3c7d0ea23 Small improvement to minifier 2023-05-01 21:00:31 -07:00
Jarred Sumner
44fbd7719e Fix some splitting bugs 2023-05-01 15:04:46 -07:00
Jarred Sumner
8b53b3ed88 FIx esm -> cjs require interop with converted CJS
TODO: make `default` namespace object for these not load the entire wrapper
2023-04-30 23:17:25 -07:00
Dylan Conway
0490bd3d2e Implement source maps (#2770)
* wip

* Begin computing source map tables

* source map progress

* external source maps

* fix merge

* remove `@as` coercion

* inline source maps and output source map shifts

* fix `codeWithSourceMapShifts()` after merge

* remove second call to `findReachableFiles()`

* use `worker.allocator`, remove comment

* don't reuse memory for source and sourceContents

* don't reuse `quote_buf`

* fix writing to stdout

* Add comment

* Don't include a sourcemap if the text was empty

* Make the parser faster

* +16% faster sourcemap generation

@dylan-conway I'll need you to look this over to make sure I didn't mess anything up

Though it currently doesn't generate the offsets in the right order...

* 30% performance improvement to Bun.build()

* Print `debugId` in source maps

cc @mitsuhiko @notzeeg

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-04-30 22:09:40 -07:00
Jarred Sumner
c3dc64d468 Fix a load order issue 2023-04-29 21:37:04 -07:00
Jarred Sumner
87921520e4 Add TODO note 2023-04-27 05:35:11 -07:00
Jarred Sumner
6142f6eb61 Wrap some things in minify_syntax flag 2023-04-26 22:32:48 -07:00
Jarred Sumner
316a75005b Inline spreads of array literals 2023-04-26 22:32:31 -07:00
Dylan Conway
75e3546f3a ensure super() is not merged with adjacent statements (#2757)
* ensure `super()` is not merged with adjacent statements

* add TODO
2023-04-26 21:46:35 -07:00
Jarred Sumner
6c6118e210 Fixes #2746 (#2748)
* Fixes #2746

* add test

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-04-26 21:07:40 -07:00
Jarred Sumner
ab447e4ff7 Implement file loader in Bun.build (#2745)
* Update bundle_v2.zig

* Implement `file` loader

* Hash in parallel

* Implement `publicPath`

* simplify

* Update bundle_v2.zig

* Implement `#!`

* Remove unnecessary optional

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-04-26 07:22:29 -07:00
Jarred Sumner
c48f7e2663 Fix error with --jsx-production in runtime 2023-04-25 22:10:59 -07:00
Jarred Sumner
5353d41014 Fixes #2738 2023-04-25 07:25:00 -07:00
Jarred Sumner
4b24bb464c Make Bun.build more reliable (#2718)
* One possible implementation to make `Bun.build` work better

* Pass allocator in

* Make our temporary buffers a little safer

* rename

* Fix memory corruption in symbol table

* Add support for deferred idle events in ThreadPool

* Free more memory

* Use a global allocator FS cache

* more `inline`

* Make duping keys optional in StringMap

* Close file handles more often

* Update router.zig

* wip possibly delete this commit

* Fix memory issues and reduce memory usage

* > 0.8

* Switch to AsyncIO.Waker and fix memory leak in JSBundleCompletionTask

* We don't need to clone this actually

* Fix error

* Format

* Fixup

* Fixup

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-04-22 19:44:23 -07:00
Jarred Sumner
541d16f8be Fix bug with merging adjacent vars 2023-04-20 23:57:44 -07:00
Dylan Conway
d78ecc76c8 Symbol minification (#2695)
* minify

* Update renamer.zig

* --minify-whitespace

* Speed up minification a little

* handle private names

* 5% faster minification

* use helper function

* fix nested scope slots

* `bun build --minify` gets another +8% faster

* print semicolons afterwards

* print semicolon after checking error

* after all error checking

* Delete code for generating legacy bundes

* remove extra whitespace around if statements

* print space before import identifier

* Use `@constCast`

* Make `S.Local#decls` use `BabyList(Decl)`

* Add `fromSlice` helper to `BabyList`

* Remove unnecessary optional chains

* minify `undefined, true, false`

* Another @constCast

* Implement merge adjacent local var

* Support --minify in `bun build --transform`

* skip comments when counting character frequencies

* Don't wrap commonjs with --transform on (unless targeting bun)

* Support --minify in the runtime

* Fix edgecase with import * as

* don't infinite loop

* --trnasform shouldn't mess with require

* Only track comments when minifying

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-04-20 05:23:12 -07:00
Dylan Conway
9e7bfdec8c with body can be an expression 2023-04-20 01:03:38 -07:00
Jarred Sumner
ea47ed0ee5 Fix broken autocomplete 2023-04-19 00:01:27 -07:00
Jarred Sumner
3a63fe457d Fix DCE bug with new Foo() when pure without arguments 2023-04-17 17:16:57 -07:00
Dylan Conway
a17624942e make sure with is parsed as a block (#2680) 2023-04-17 15:54:02 -07:00
Dylan Conway
1ce60275d0 fix typescript decorators with index and number keys (#2677)
* handle index property key case

* non-method number property

* tests for property keys
2023-04-17 15:26:18 -07:00
Jarred Sumner
bffe5e820b more 2023-04-17 08:01:03 -07:00
Jarred Sumner
6b758c809f Fix dynamic require() 2023-04-17 03:45:54 -07:00
Jarred Sumner
07b4b4ced0 Don't record named exports for deoptimized CJS 2023-04-17 01:18:05 -07:00
Jarred Sumner
e624dd6d4d Deoptimize CJS more 2023-04-17 00:54:03 -07:00
Jarred Sumner
0514f59288 DCE for some global constructor calls 2023-04-17 00:32:21 -07:00
Jarred Sumner
5a8cfd8390 Deoptimize CJS -> ESM transform on computed property access of exports object
Example:
```js
for (var k in constants) {
    exports[k] = constants[k];
}
```
2023-04-17 00:30:40 -07:00
Jarred Sumner
eec1a07907 Attempt to automatically handle some cyclical import issues with ESM
Fixes https://github.com/kysely-org/kysely/issues/412
2023-04-16 22:20:22 -07:00
Jarred Sumner
30b0d006fe Fix for ReferenceError: Cannot access uninitialized variable. 2023-04-16 21:49:33 -07:00
Jarred Sumner
c916a55ead Lazily wrap 2023-04-16 20:15:47 -07:00
Jarred Sumner
06dab241ef Unwrap, but we broke code splitting 2023-04-16 06:51:07 -07:00
Jarred Sumner
e05cc8db90 prepare for unwrapping 2023-04-16 01:56:14 -07:00
Jarred Sumner
09357f55f9 Fix bugs with loading jsxDEV when it should be jsx or vice versa 2023-04-16 01:31:01 -07:00
Jarred Sumner
be5d21a4f1 Delete some legacy bundling code 2023-04-15 18:45:29 -07:00
Jarred Sumner
b687c3ab88 Implement template string folding
@paperdave can you help write tests for this if not already covered?

example:
```js
if (
  `${1}-${2}-${3}-${null}-${undefined}-${true}-${false}` === "1-2-3-null-undefined-true-false"
) {
  if (
    "\uD83D\uDE0B \uD83D\uDCCB \uD83D\uDC4C".length === 8 &&
    "😋📋👌".length === 6
  ) {
    console.log(`such fold. very inline. wow.`);
  }
}
```
2023-04-15 05:15:46 -07:00