mirror of
https://github.com/oven-sh/bun
synced 2026-02-08 18:08:50 +00:00
Compare commits
686 Commits
jarred/dum
...
dylan/gith
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c2a7c6b82 | ||
|
|
766f8ceebc | ||
|
|
32f8cb31be | ||
|
|
297732bbb3 | ||
|
|
90be254373 | ||
|
|
034dd3d03d | ||
|
|
0384d3c558 | ||
|
|
00773e15f1 | ||
|
|
126809f20c | ||
|
|
fbe3f5dfb3 | ||
|
|
29b4c84b8c | ||
|
|
38f9bb96df | ||
|
|
6e0ec3248f | ||
|
|
35d0cf910d | ||
|
|
5cb84231b2 | ||
|
|
bbd4504954 | ||
|
|
a0b44e9873 | ||
|
|
90c395bdac | ||
|
|
c2b7cadd4f | ||
|
|
1a4685213b | ||
|
|
76e6a178e3 | ||
|
|
bb5efb67ab | ||
|
|
4bac561184 | ||
|
|
edf9757650 | ||
|
|
e65def0f82 | ||
|
|
7970704222 | ||
|
|
ced3226ffb | ||
|
|
1c20e05d70 | ||
|
|
c03f7c998d | ||
|
|
4969f068f6 | ||
|
|
beb03c3c54 | ||
|
|
4a1470d26c | ||
|
|
5a3b634982 | ||
|
|
520ecc21ac | ||
|
|
8846ae2454 | ||
|
|
a4c379d316 | ||
|
|
8911c398d9 | ||
|
|
25b080a05e | ||
|
|
1738588f38 | ||
|
|
5e60a9363f | ||
|
|
cd20a84f18 | ||
|
|
e07dd6194a | ||
|
|
bcabf31121 | ||
|
|
5cb6890fad | ||
|
|
f1e6ea2254 | ||
|
|
56a6cf716e | ||
|
|
3517ce8e23 | ||
|
|
3c525b4962 | ||
|
|
e945be72b4 | ||
|
|
3002a7e14f | ||
|
|
c18165b30f | ||
|
|
e18863df1b | ||
|
|
41f23273b0 | ||
|
|
e62a422c14 | ||
|
|
91f7e6c66d | ||
|
|
946424cf86 | ||
|
|
270b07e85e | ||
|
|
b458abedbb | ||
|
|
4ef60da8a9 | ||
|
|
0e7f69f179 | ||
|
|
84ee02cb4b | ||
|
|
7a92bf87c8 | ||
|
|
55c1311aef | ||
|
|
beed35e55e | ||
|
|
5cd37e5e8a | ||
|
|
1761379135 | ||
|
|
30b10d5fb1 | ||
|
|
ca58556c54 | ||
|
|
a1b2c23671 | ||
|
|
5d60aae3b3 | ||
|
|
2392e48e9d | ||
|
|
3386afc0bc | ||
|
|
1a1014525b | ||
|
|
c30a110641 | ||
|
|
ced6201cb0 | ||
|
|
905a3313b5 | ||
|
|
f0475e89c5 | ||
|
|
cb75b4799f | ||
|
|
5f1150442a | ||
|
|
94b6ab02c2 | ||
|
|
631181a503 | ||
|
|
83a5c9f3da | ||
|
|
791f8ab0a1 | ||
|
|
da11bb4a82 | ||
|
|
94409770de | ||
|
|
c505f172b8 | ||
|
|
9972e553a0 | ||
|
|
cdbdc55cbf | ||
|
|
3f472bd511 | ||
|
|
4eb3067ef5 | ||
|
|
3c8701362b | ||
|
|
fadd1c0152 | ||
|
|
1e19d59273 | ||
|
|
cfd42c3999 | ||
|
|
98010efefc | ||
|
|
020f49dcd6 | ||
|
|
1e841a7881 | ||
|
|
b0d1cc1df7 | ||
|
|
0a835ba963 | ||
|
|
2b1b897375 | ||
|
|
87983464d8 | ||
|
|
d5565ab2cd | ||
|
|
8dc811e4aa | ||
|
|
1e1c817603 | ||
|
|
e2ed31b7e7 | ||
|
|
a7d9f16107 | ||
|
|
bbbb4835b4 | ||
|
|
f191993c8f | ||
|
|
994e58b5ea | ||
|
|
59639ba654 | ||
|
|
d22e3ebf9a | ||
|
|
0873a15a63 | ||
|
|
20718b972e | ||
|
|
a951859c55 | ||
|
|
3005d9e348 | ||
|
|
7f96f72d65 | ||
|
|
7550658fab | ||
|
|
80736043d6 | ||
|
|
3b259211df | ||
|
|
6b777c4b0b | ||
|
|
81a6aef771 | ||
|
|
f41bb3fb20 | ||
|
|
e0557d70e3 | ||
|
|
e2231f15e8 | ||
|
|
a19c7b4304 | ||
|
|
4a328609b9 | ||
|
|
021331f154 | ||
|
|
647093ff73 | ||
|
|
7df50add99 | ||
|
|
c99059db9f | ||
|
|
237bcdf99f | ||
|
|
0b395ca1dc | ||
|
|
c1fd06c56d | ||
|
|
f79301c620 | ||
|
|
4ae33cbf45 | ||
|
|
59655d0587 | ||
|
|
7edaf736a2 | ||
|
|
c770db7d52 | ||
|
|
cbc015d8d8 | ||
|
|
18e143ae7b | ||
|
|
8989a1883e | ||
|
|
983b747020 | ||
|
|
1ba95a65ee | ||
|
|
54b8cbd972 | ||
|
|
4eb9e8bb5a | ||
|
|
80c2da73ef | ||
|
|
4ba564dbf1 | ||
|
|
5fc8bc8f04 | ||
|
|
9fd3b5587b | ||
|
|
04b00229cf | ||
|
|
8a29c64302 | ||
|
|
2345e268bc | ||
|
|
97066d034d | ||
|
|
5f24c8a4a8 | ||
|
|
96438a4d58 | ||
|
|
5b3cf8bec5 | ||
|
|
c02b921983 | ||
|
|
0b0aadfc5f | ||
|
|
905aff3cfc | ||
|
|
9e6d39bae6 | ||
|
|
f651f74f9d | ||
|
|
01b908ad64 | ||
|
|
8a2729e75f | ||
|
|
9b3db96308 | ||
|
|
b86915c808 | ||
|
|
be706fecb4 | ||
|
|
2e94d1a033 | ||
|
|
fc6c4bbefb | ||
|
|
2fc6913085 | ||
|
|
f444e628ca | ||
|
|
42be4e52fe | ||
|
|
385c81d67b | ||
|
|
8b0a7b9fb8 | ||
|
|
2c5e1cb7d7 | ||
|
|
7be1e85c6d | ||
|
|
4cc9a43089 | ||
|
|
01c81a5f57 | ||
|
|
85eda20587 | ||
|
|
940ecd05a8 | ||
|
|
7c8a196c76 | ||
|
|
79a2f81447 | ||
|
|
0504bb8984 | ||
|
|
d726a17aca | ||
|
|
33e93e6789 | ||
|
|
c8da2618ee | ||
|
|
8e9af05d6a | ||
|
|
ba0b5baee4 | ||
|
|
384a9cda5e | ||
|
|
97ec866f85 | ||
|
|
ef3c9b7c6d | ||
|
|
6260aaac5f | ||
|
|
d3dab09690 | ||
|
|
f8f8353108 | ||
|
|
66234d9d57 | ||
|
|
3d60b870ee | ||
|
|
3ae23091c6 | ||
|
|
092b86321c | ||
|
|
da07811427 | ||
|
|
c0dd284136 | ||
|
|
504972fa5d | ||
|
|
f78f423d0b | ||
|
|
c4ca4c70d1 | ||
|
|
d94b96d9f4 | ||
|
|
74251fbf5e | ||
|
|
08a738c6c8 | ||
|
|
cc369ad9d0 | ||
|
|
a94bba6399 | ||
|
|
f6a62c01bf | ||
|
|
979074de2b | ||
|
|
958504296d | ||
|
|
75a3c25ff8 | ||
|
|
3da9c728d6 | ||
|
|
85733abe79 | ||
|
|
89625c0cc8 | ||
|
|
2d881b88f9 | ||
|
|
9ef33312b1 | ||
|
|
1d58da3cb3 | ||
|
|
c0dee9adf1 | ||
|
|
afd66c62ff | ||
|
|
57da449442 | ||
|
|
62d1e46b92 | ||
|
|
b988a63429 | ||
|
|
e322dfb589 | ||
|
|
989ac717fc | ||
|
|
3ceb2655d8 | ||
|
|
8c3a2ff6cc | ||
|
|
b9d143c99d | ||
|
|
f40d6bd94d | ||
|
|
4f7d06500c | ||
|
|
f6bbfa7e40 | ||
|
|
435fdbfddc | ||
|
|
83602b6834 | ||
|
|
3b808f5ac5 | ||
|
|
aaf1624346 | ||
|
|
a98e0adc7d | ||
|
|
06487ef64f | ||
|
|
b2fdcad77b | ||
|
|
51f9a91736 | ||
|
|
d7b73dd4fc | ||
|
|
5931e350cd | ||
|
|
e7a14f857d | ||
|
|
79abd245e2 | ||
|
|
2b622162ef | ||
|
|
5a3e0836b1 | ||
|
|
24c4d92c0b | ||
|
|
184c56704b | ||
|
|
feea8824f1 | ||
|
|
028e48ed97 | ||
|
|
609222d05e | ||
|
|
5d91922c5d | ||
|
|
d66831c4f3 | ||
|
|
7f1caaaa44 | ||
|
|
42fc49d413 | ||
|
|
72970ecd15 | ||
|
|
f9b573aa89 | ||
|
|
bbf8a17bf5 | ||
|
|
8c8accf968 | ||
|
|
24be0f4fc5 | ||
|
|
e59c6f642d | ||
|
|
1bdb4b2466 | ||
|
|
ca0ab9508f | ||
|
|
68fd43313d | ||
|
|
b06ca07eee | ||
|
|
01ed3045cb | ||
|
|
6b3be4d821 | ||
|
|
e399bceb3c | ||
|
|
a8fca7d679 | ||
|
|
b249d1b75b | ||
|
|
3495b7c1f8 | ||
|
|
3c20290e49 | ||
|
|
0df3485132 | ||
|
|
3ea983578f | ||
|
|
000a0c9dca | ||
|
|
c1d7ec9564 | ||
|
|
9e909dcae1 | ||
|
|
3c1ad4b568 | ||
|
|
743531b4ac | ||
|
|
d1834b5a92 | ||
|
|
e38a3e5d85 | ||
|
|
6a1fc20835 | ||
|
|
95c747f598 | ||
|
|
65302a1db5 | ||
|
|
c4557e57a1 | ||
|
|
f61d9e340d | ||
|
|
47a2548cbf | ||
|
|
5516adec57 | ||
|
|
4e920d73b7 | ||
|
|
a92258355d | ||
|
|
5bbaa7b400 | ||
|
|
de8ace9fbe | ||
|
|
375f69559f | ||
|
|
7d15a040fd | ||
|
|
3236a99b2d | ||
|
|
18d4cfd4f2 | ||
|
|
6255fe6a4b | ||
|
|
dd9691289f | ||
|
|
e98aae195c | ||
|
|
5741d4f9b4 | ||
|
|
1bed749d8c | ||
|
|
bbe66a4367 | ||
|
|
f649aae36f | ||
|
|
9f9db85a94 | ||
|
|
bbc2dacd84 | ||
|
|
0bb9493e47 | ||
|
|
14efd03b48 | ||
|
|
d5b11be769 | ||
|
|
007133d060 | ||
|
|
6279358cbc | ||
|
|
ca34a09a4d | ||
|
|
b746579863 | ||
|
|
8549134658 | ||
|
|
27e40b0836 | ||
|
|
b57f51fda2 | ||
|
|
fad1742410 | ||
|
|
768f4539e8 | ||
|
|
37b16a9007 | ||
|
|
a2d96f9040 | ||
|
|
b5519af7e7 | ||
|
|
9d94f148dc | ||
|
|
5cf64b07be | ||
|
|
e301fde96d | ||
|
|
2a7687fff8 | ||
|
|
780f7de843 | ||
|
|
660eb46b17 | ||
|
|
c6f3044654 | ||
|
|
b374c67c16 | ||
|
|
ce960f9506 | ||
|
|
ab49f95ef2 | ||
|
|
047754d5dd | ||
|
|
b400dfb386 | ||
|
|
88538b7c2c | ||
|
|
79138c4c7c | ||
|
|
24fbcb8f52 | ||
|
|
51e437e8a0 | ||
|
|
e6c2f48895 | ||
|
|
cf961336d0 | ||
|
|
b44615a916 | ||
|
|
fd740d41e5 | ||
|
|
46a9b124f5 | ||
|
|
7c2180194c | ||
|
|
3150ff49a7 | ||
|
|
2fe5b4da2f | ||
|
|
0b94ccdf8c | ||
|
|
845421c44b | ||
|
|
42ea8b2402 | ||
|
|
a13e64c286 | ||
|
|
60d0e6b73f | ||
|
|
a315ee7e03 | ||
|
|
57672eb266 | ||
|
|
511c0ab386 | ||
|
|
d9306c2681 | ||
|
|
aa17f97d13 | ||
|
|
e547efbf4a | ||
|
|
3d243e5e95 | ||
|
|
5ea8fe8c90 | ||
|
|
84b2cc1739 | ||
|
|
15ce587fa2 | ||
|
|
20a4b72ff4 | ||
|
|
41d778fbfb | ||
|
|
5f3a6f2bf3 | ||
|
|
58185e139a | ||
|
|
51d69d8c85 | ||
|
|
4dd2cb33b7 | ||
|
|
31f025fa02 | ||
|
|
81317a52ea | ||
|
|
7d29782896 | ||
|
|
1aa4cd2f6a | ||
|
|
c7f411bd88 | ||
|
|
60e6a47bb0 | ||
|
|
d9dc15115c | ||
|
|
159ee8ddfc | ||
|
|
84634117a9 | ||
|
|
5ea278e1c6 | ||
|
|
9e29159f44 | ||
|
|
e23832d1ce | ||
|
|
9665d7d216 | ||
|
|
c114956788 | ||
|
|
61bf957b99 | ||
|
|
2cbac4bbdd | ||
|
|
320c23543c | ||
|
|
0ea8de4087 | ||
|
|
7129303347 | ||
|
|
8582bc08ec | ||
|
|
eeea1707a1 | ||
|
|
b7e08cb937 | ||
|
|
054413ba1f | ||
|
|
04dcf180d5 | ||
|
|
79094e6643 | ||
|
|
682af03cdc | ||
|
|
1564f75d06 | ||
|
|
224f980081 | ||
|
|
2369bade48 | ||
|
|
10cd5aaa15 | ||
|
|
f4668e45f8 | ||
|
|
a1e62e6bf9 | ||
|
|
e009be1c5d | ||
|
|
af0bc28c51 | ||
|
|
bb5450fad0 | ||
|
|
5bb8c42bdb | ||
|
|
69114ac0a9 | ||
|
|
8830cbc51e | ||
|
|
23c90a76c2 | ||
|
|
714ce7619d | ||
|
|
34b2e9acc2 | ||
|
|
4c818b9364 | ||
|
|
cee33485d0 | ||
|
|
f052e66df5 | ||
|
|
46e34a3fa9 | ||
|
|
2bcae716d1 | ||
|
|
4281a68a2b | ||
|
|
ab020b2275 | ||
|
|
0617896d70 | ||
|
|
1c3cb22d1f | ||
|
|
275a635ad7 | ||
|
|
35bf039dfb | ||
|
|
de9a2b9fe5 | ||
|
|
201cbb20e4 | ||
|
|
8c51db0879 | ||
|
|
10b04fbd26 | ||
|
|
bdc43c1696 | ||
|
|
bc028168a8 | ||
|
|
00f428b627 | ||
|
|
d28a4dbb00 | ||
|
|
0a30bf0212 | ||
|
|
04658776e4 | ||
|
|
369e9f3fbd | ||
|
|
1b7b37232e | ||
|
|
fe4f39fd17 | ||
|
|
9cc03cd71a | ||
|
|
d9f9fc975b | ||
|
|
bdbc0f23e7 | ||
|
|
ba6908aed7 | ||
|
|
4e6b905a98 | ||
|
|
43f2a8eb85 | ||
|
|
c72629d88a | ||
|
|
33cf491fea | ||
|
|
2f917f7030 | ||
|
|
207282862e | ||
|
|
3c054253e1 | ||
|
|
2c0fd28e72 | ||
|
|
b8586b33da | ||
|
|
beaf91590a | ||
|
|
d84f79bcc1 | ||
|
|
917cbc8d5d | ||
|
|
074f236994 | ||
|
|
03eb000ad6 | ||
|
|
9a184c8279 | ||
|
|
b53a332809 | ||
|
|
a09b515a62 | ||
|
|
8eddfc61a8 | ||
|
|
37525db5cf | ||
|
|
e9eb88355b | ||
|
|
9f5564b4bc | ||
|
|
931ba9ad49 | ||
|
|
851b8acb76 | ||
|
|
7a158e68ae | ||
|
|
cb36b4d1ab | ||
|
|
2621fbf206 | ||
|
|
d7ab2c04ec | ||
|
|
f84f77d1ed | ||
|
|
425f4b0de1 | ||
|
|
7b70ed52fa | ||
|
|
8cf1707cd3 | ||
|
|
9f4d7690ac | ||
|
|
5854d39525 | ||
|
|
b4e6ca0462 | ||
|
|
f408749182 | ||
|
|
92da72beb0 | ||
|
|
a896d6c46c | ||
|
|
4eed310a45 | ||
|
|
1daa61a45f | ||
|
|
03490afdb3 | ||
|
|
e1e5f8c43b | ||
|
|
b655d09387 | ||
|
|
e0503faec7 | ||
|
|
bddf523ac9 | ||
|
|
1506a25198 | ||
|
|
1abc89e391 | ||
|
|
3cb462a3e6 | ||
|
|
f8b87e3ee2 | ||
|
|
e6f055e9fb | ||
|
|
f999bdca26 | ||
|
|
e75ce84c37 | ||
|
|
b631ea7d72 | ||
|
|
7b59d9d97c | ||
|
|
d28247573c | ||
|
|
56884b5f1d | ||
|
|
887496bcf9 | ||
|
|
da43761032 | ||
|
|
4efce63dad | ||
|
|
2a33bd2cc5 | ||
|
|
b337e36da1 | ||
|
|
77d0828179 | ||
|
|
eccd854dbc | ||
|
|
a64f2f5466 | ||
|
|
d3cd753d4d | ||
|
|
f423791e19 | ||
|
|
a6cadce6f6 | ||
|
|
51d0c3b79f | ||
|
|
7672ee95af | ||
|
|
512acf072e | ||
|
|
4ee11d922c | ||
|
|
885049831f | ||
|
|
e5106d320c | ||
|
|
ede2a494bc | ||
|
|
48df99c496 | ||
|
|
ed15259623 | ||
|
|
4272038743 | ||
|
|
002f4ecc9e | ||
|
|
495f25501f | ||
|
|
0992c3867d | ||
|
|
58a78ef8b7 | ||
|
|
740027975b | ||
|
|
706406af48 | ||
|
|
39493e5d94 | ||
|
|
a249c79983 | ||
|
|
6459288c85 | ||
|
|
4726b7e227 | ||
|
|
358f388a46 | ||
|
|
4f35d0537b | ||
|
|
1d9c982488 | ||
|
|
5e6e8ece4e | ||
|
|
964c4037de | ||
|
|
1bc76511ec | ||
|
|
35509126a6 | ||
|
|
8765092591 | ||
|
|
46678c46ee | ||
|
|
e8d948b9d9 | ||
|
|
f891d1df50 | ||
|
|
faad250559 | ||
|
|
74e87b5a8a | ||
|
|
819a63e3ec | ||
|
|
c65c320b09 | ||
|
|
a53ed1bde1 | ||
|
|
d2190ea6f3 | ||
|
|
b7850565f4 | ||
|
|
10996a797a | ||
|
|
949d715a14 | ||
|
|
90388aa7ea | ||
|
|
1671977af7 | ||
|
|
8aec181f16 | ||
|
|
37753e9787 | ||
|
|
8519ff02e6 | ||
|
|
397cb6600b | ||
|
|
bef469ea55 | ||
|
|
ac7ad4d5c6 | ||
|
|
0b27a26edb | ||
|
|
e12dc23c62 | ||
|
|
7fec8a96ab | ||
|
|
14b063d802 | ||
|
|
99fa95b954 | ||
|
|
f27fdf932b | ||
|
|
d0dbafb32f | ||
|
|
b5bd98c0ef | ||
|
|
e851e5fddb | ||
|
|
1aff60d2ba | ||
|
|
d5c81b7423 | ||
|
|
ddb6eced34 | ||
|
|
5c3c50372b | ||
|
|
af0acaff37 | ||
|
|
9090f06612 | ||
|
|
7a193ed243 | ||
|
|
c168c70e60 | ||
|
|
557c2e97d7 | ||
|
|
64871b2bfb | ||
|
|
ce2cdb44e1 | ||
|
|
348ad87013 | ||
|
|
0e900c8ca9 | ||
|
|
61673fa705 | ||
|
|
d1a4f4fd69 | ||
|
|
0b915fed03 | ||
|
|
7b23cb5cd7 | ||
|
|
04328c163b | ||
|
|
5a95fae533 | ||
|
|
47f0e14477 | ||
|
|
0ef25c65ec | ||
|
|
b0c89baac7 | ||
|
|
7bc20c994c | ||
|
|
033b8936c9 | ||
|
|
6336d01743 | ||
|
|
cc062855af | ||
|
|
d68f44d604 | ||
|
|
ffacc1d02d | ||
|
|
1be13fa192 | ||
|
|
46094189f4 | ||
|
|
0c8fe888b9 | ||
|
|
57fcd882fc | ||
|
|
b2e48477db | ||
|
|
e4805d0895 | ||
|
|
e9eaab727b | ||
|
|
2ded9af4f7 | ||
|
|
2aa304a29d | ||
|
|
3419d3bc02 | ||
|
|
a6644eac24 | ||
|
|
6c23035769 | ||
|
|
4a698ed52c | ||
|
|
e1fcc810cb | ||
|
|
6bfb65b312 | ||
|
|
dc330701d2 | ||
|
|
d434370500 | ||
|
|
9806c301dd | ||
|
|
73416ebb62 | ||
|
|
bddf484c2c | ||
|
|
21531f1e80 | ||
|
|
ac36ea51cf | ||
|
|
ae3fcb5bd8 | ||
|
|
5767ad3fc5 | ||
|
|
4f41c3fb40 | ||
|
|
b249ed7257 | ||
|
|
2b4dcc8c81 | ||
|
|
15a5aa1a68 | ||
|
|
3cf229a898 | ||
|
|
e94172255d | ||
|
|
d21aee5143 | ||
|
|
65a56c2560 | ||
|
|
1bd71f2f44 | ||
|
|
fe33073f2e | ||
|
|
14d52897ad | ||
|
|
ca434fba6e | ||
|
|
55f8029dc2 | ||
|
|
a3dc33c133 | ||
|
|
a274ddba3a | ||
|
|
8e36485a76 | ||
|
|
5f2e74bbcc | ||
|
|
ce6fc8609b | ||
|
|
a251669fa1 | ||
|
|
4f6636b3ca | ||
|
|
28a3093d48 | ||
|
|
fe0506b88e | ||
|
|
e78f891acd | ||
|
|
948fdfe482 | ||
|
|
757d19c2f7 | ||
|
|
a4b67ccbff | ||
|
|
1fca6becd3 | ||
|
|
6965b5c192 | ||
|
|
dfa62b660d | ||
|
|
5ff2cd3418 | ||
|
|
f56eec6fa3 | ||
|
|
65330a32cc | ||
|
|
003237b086 | ||
|
|
70f89b1bfc | ||
|
|
4f5f01a748 | ||
|
|
e41d7a0bd5 | ||
|
|
b745ae2667 | ||
|
|
2f1e9b2eb8 | ||
|
|
c68b11e8cb | ||
|
|
16d20bde09 | ||
|
|
bea44d948e | ||
|
|
b230e7a73a | ||
|
|
e024116b77 | ||
|
|
79b6d4734a | ||
|
|
dc26181da4 | ||
|
|
0603991beb | ||
|
|
17fa4211ac | ||
|
|
81a1d8f589 | ||
|
|
055f1e9639 | ||
|
|
cac11ee826 | ||
|
|
f8d9a8be87 | ||
|
|
9c601542d0 | ||
|
|
7c7769a7c7 | ||
|
|
17e8181b4e | ||
|
|
ee939f7a6d | ||
|
|
6cc89eff2c | ||
|
|
d6d04cab24 | ||
|
|
bb95f90a62 | ||
|
|
1806322554 | ||
|
|
38b5a85d8a | ||
|
|
68b55cd855 | ||
|
|
43b4e1b67b | ||
|
|
f3fb712051 | ||
|
|
f6779193c0 | ||
|
|
29f72efac3 | ||
|
|
4985a44fe2 | ||
|
|
6a9bc6f6c2 | ||
|
|
bf6b174233 | ||
|
|
5de98f23bb | ||
|
|
1d02104c51 | ||
|
|
4f22c39651 | ||
|
|
6c01a1191f | ||
|
|
b95f7d5bbc | ||
|
|
c32013dbba | ||
|
|
6cdb7e77dd | ||
|
|
0e7ed4c667 | ||
|
|
3b802c9a13 | ||
|
|
996e5dd235 | ||
|
|
025749027b |
@@ -1,7 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
curl -L https://github.com/Jarred-Sumner/vscode-zig/releases/download/march18/zig-0.2.5.vsix >/home/ubuntu/vscode-zig.vsix
|
||||
git clone https://github.com/oven-sh/zls /home/ubuntu/zls
|
||||
curl -L https://github.com/zigtools/zls-vscode/releases/download/1.1.6/zls-vscode-1.1.6.vsix >/home/ubuntu/vscode-zig.vsix
|
||||
git clone https://github.com/zigtools/zls /home/ubuntu/zls
|
||||
cd /home/ubuntu/zls
|
||||
git checkout aabdb0c6ecb3c9a47feff2c2bfb9be4e95adf723
|
||||
git submodule update --init --recursive --progress --depth=1
|
||||
zig build -Drelease-fast
|
||||
|
||||
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -6,3 +6,5 @@ src/bun.js/bindings/sqlite/sqlite3.c linguist-vendored
|
||||
src/bun.js/bindings/sqlite/sqlite3_local.h linguist-vendored
|
||||
*.lockb binary diff=lockb
|
||||
*.zig text eol=lf
|
||||
src/bun.js/bindings/simdutf.cpp linguist-vendored
|
||||
src/bun.js/bindings/simdutf.h linguist-vendored
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/1-install-problem.yml
vendored
2
.github/ISSUE_TEMPLATE/1-install-problem.yml
vendored
@@ -15,7 +15,7 @@ body:
|
||||
attributes:
|
||||
label: What platform is your computer?
|
||||
description: |
|
||||
For MacOS and Linux: copy the output of `uname -mprsv`
|
||||
For MacOS and Linux: copy the output of `uname -mprs`
|
||||
For Windows: copy the output of `"$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })"` in the PowerShell console
|
||||
- type: textarea
|
||||
attributes:
|
||||
|
||||
13
.github/ISSUE_TEMPLATE/2-bug-report.yml
vendored
13
.github/ISSUE_TEMPLATE/2-bug-report.yml
vendored
@@ -1,6 +1,6 @@
|
||||
name: 🐛 Bug Report
|
||||
description: Report an issue that should be fixed
|
||||
labels: [bug, need repro]
|
||||
labels: [bug]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
@@ -19,15 +19,14 @@ body:
|
||||
attributes:
|
||||
label: What platform is your computer?
|
||||
description: |
|
||||
For MacOS and Linux: copy the output of `uname -mprsv`
|
||||
For MacOS and Linux: copy the output of `uname -mprs`
|
||||
For Windows: copy the output of `"$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })"` in the PowerShell console
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What steps can reproduce the bug?
|
||||
description: Enter the details about your bug. If possible, please provide a small code snippet that can reproduce the issue.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: How often does it reproduce? Is there a required condition?
|
||||
description: Explain the bug and provide a code snippet that can reproduce it.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What is the expected behavior?
|
||||
@@ -36,8 +35,6 @@ body:
|
||||
attributes:
|
||||
label: What do you see instead?
|
||||
description: If possible, please provide text instead of a screenshot.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional information
|
||||
|
||||
4
.github/ISSUE_TEMPLATE/4-docs-problem.yml
vendored
4
.github/ISSUE_TEMPLATE/4-docs-problem.yml
vendored
@@ -18,8 +18,6 @@ body:
|
||||
- Documentation is confusing
|
||||
- Example code is not working
|
||||
- Something else
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What is the issue?
|
||||
@@ -28,4 +26,4 @@ body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Where did you find it?
|
||||
description: If possible, please provide the URL(s) where you found this issue.
|
||||
description: If possible, please provide the URL(s) where you found this issue.
|
||||
|
||||
46
.github/workflows/bun-landing.yml
vendored
46
.github/workflows/bun-landing.yml
vendored
@@ -1,46 +0,0 @@
|
||||
name: bun-landing
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- packages/bun-landing/**/*
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: website build
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository_owner == 'oven-sh'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version:
|
||||
- 16
|
||||
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Use Node ${{ matrix.node }}
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ matrix.node }}
|
||||
|
||||
- name: Install bun
|
||||
uses: xhyrom/setup-bun@v0.1.2
|
||||
with:
|
||||
bun-version: latest
|
||||
|
||||
- name: Install global dependencies
|
||||
run: bun install
|
||||
|
||||
- name: Install package dependencies
|
||||
run: cd packages/bun-landing && bun install
|
||||
|
||||
- name: Build
|
||||
run: cd packages/bun-landing && bun run build.tsx
|
||||
|
||||
- name: Commit changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: build:(landing) automated website build
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
22
.github/workflows/bun-linux-build.yml
vendored
22
.github/workflows/bun-linux-build.yml
vendored
@@ -6,7 +6,8 @@ env:
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, bun-actions]
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "src/**/*"
|
||||
- "test/**/*"
|
||||
@@ -14,7 +15,8 @@ on:
|
||||
- "Makefile"
|
||||
- "Dockerfile"
|
||||
pull_request:
|
||||
branches: [main]
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "src/**/*"
|
||||
- "test/**/*"
|
||||
@@ -37,22 +39,25 @@ jobs:
|
||||
arch: x86_64
|
||||
build_arch: amd64
|
||||
runner: linux-amd64
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-linux-amd64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-linux-amd64-lto.tar.gz"
|
||||
webkit_basename: "bun-webkit-linux-amd64-lto"
|
||||
build_machine_arch: x86_64
|
||||
- cpu: westmere
|
||||
tag: linux-x64-baseline
|
||||
arch: x86_64
|
||||
build_arch: amd64
|
||||
runner: linux-amd64
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-linux-amd64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-linux-amd64-lto.tar.gz"
|
||||
webkit_basename: "bun-webkit-linux-amd64-lto"
|
||||
build_machine_arch: x86_64
|
||||
- cpu: native
|
||||
tag: linux-aarch64
|
||||
arch: aarch64
|
||||
build_arch: arm64
|
||||
runner: linux-arm64
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-linux-arm64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-linux-arm64-lto.tar.gz"
|
||||
webkit_basename: "bun-webkit-linux-arm64-lto"
|
||||
build_machine_arch: aarch64
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
@@ -71,16 +76,19 @@ jobs:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- run: |
|
||||
mkdir -p /tmp/.buildx-cache-${{matrix.tag}}
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: .
|
||||
push: false
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
cache-from: type=local,src=/tmp/.buildx-cache-${{matrix.tag}}
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache-${{matrix.tag}}
|
||||
build-args: |
|
||||
ARCH=${{matrix.arch}}
|
||||
BUILDARCH=${{matrix.build_arch}}
|
||||
BUILD_MACHINE_ARCH=${{matrix.build_machine_arch}}
|
||||
CPU_TARGET=${{matrix.cpu}}
|
||||
WEBKIT_URL=${{matrix.webkit_url}}
|
||||
GIT_SHA=${{github.sha}}
|
||||
|
||||
64
.github/workflows/bun-mac-aarch64.yml
vendored
64
.github/workflows/bun-mac-aarch64.yml
vendored
@@ -6,7 +6,7 @@ env:
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, bun-actions]
|
||||
branches: [main]
|
||||
paths:
|
||||
- "src/**/*"
|
||||
- "test/**/*"
|
||||
@@ -59,21 +59,40 @@ jobs:
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
if: runner.arch == 'X64'
|
||||
with:
|
||||
context: .
|
||||
push: false
|
||||
tags: ghcr.io/oven-sh/bun-obj:${{github.sha}}-${{matrix.cpu}}-${{matrix.arch}}-macos
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
cache-to: type=gha,mode=min
|
||||
build-args: |
|
||||
ARCH=${{ matrix.arch }}
|
||||
BUILDARCH=amd64
|
||||
BUILD_MACHINE_ARCH=x86_64
|
||||
CPU_TARGET=${{ matrix.cpu }}
|
||||
TRIPLET=${{matrix.arch}}-macos-none
|
||||
GIT_SHA=${{github.sha}}
|
||||
platforms: linux/amd64
|
||||
target: build_release_obj
|
||||
outputs: type=local,dest=${{runner.temp}}/release
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
if: runner.arch == 'ARM64'
|
||||
with:
|
||||
context: .
|
||||
push: false
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=min
|
||||
build-args: |
|
||||
ARCH=${{ matrix.arch }}
|
||||
BUILDARCH=arm64
|
||||
BUILD_MACHINE_ARCH=aarch64
|
||||
CPU_TARGET=${{ matrix.cpu }}
|
||||
TRIPLET=${{matrix.arch}}-macos-none
|
||||
GIT_SHA=${{github.sha}}
|
||||
platforms: linux/arm64
|
||||
target: build_release_obj
|
||||
outputs: type=local,dest=${{runner.temp}}/release
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ matrix.tag }}
|
||||
@@ -91,7 +110,7 @@ jobs:
|
||||
# obj: bun-obj-darwin-x64-baseline
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64-baseline
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# dependencies: true
|
||||
# compile_obj: false
|
||||
# - cpu: haswell
|
||||
@@ -100,7 +119,7 @@ jobs:
|
||||
# obj: bun-obj-darwin-x64
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# dependencies: true
|
||||
# compile_obj: false
|
||||
# - cpu: westmere
|
||||
@@ -109,7 +128,7 @@ jobs:
|
||||
# obj: bun-obj-darwin-x64-baseline
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64-baseline
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# dependencies: false
|
||||
# compile_obj: true
|
||||
# - cpu: haswell
|
||||
@@ -118,7 +137,7 @@ jobs:
|
||||
# obj: bun-obj-darwin-x64
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# dependencies: false
|
||||
# compile_obj: true
|
||||
- cpu: native
|
||||
@@ -126,7 +145,7 @@ jobs:
|
||||
tag: bun-darwin-aarch64
|
||||
obj: bun-obj-darwin-aarch64
|
||||
artifact: bun-obj-darwin-aarch64
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-arm64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-arm64-lto.tar.gz"
|
||||
runner: macos-arm64
|
||||
dependencies: true
|
||||
compile_obj: true
|
||||
@@ -146,10 +165,16 @@ jobs:
|
||||
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
||||
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
||||
run: |
|
||||
brew install rust llvm@13 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
brew install ccache rust llvm@15 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
echo "export PATH=$(brew --prefix ccache)/bin:\$PATH" >> $GITHUB_ENV
|
||||
echo "export PATH=$(brew --prefix coreutils)/libexec/gnubin:\$PATH" >> $GITHUB_ENV
|
||||
echo "export PATH=$(brew --prefix llvm@13)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@13
|
||||
echo "export PATH=$(brew --prefix llvm@15)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@15
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ runner.os }}-ccache-${{ matrix.tag }}
|
||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}
|
||||
- name: Download WebKit
|
||||
if: matrix.compile_obj
|
||||
env:
|
||||
@@ -224,7 +249,7 @@ jobs:
|
||||
# package: bun-darwin-x64
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64-baseline
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# - cpu: haswell
|
||||
# arch: x86_64
|
||||
# tag: bun-darwin-x64
|
||||
@@ -232,14 +257,14 @@ jobs:
|
||||
# package: bun-darwin-x64
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
- cpu: native
|
||||
arch: aarch64
|
||||
tag: bun-darwin-aarch64
|
||||
obj: bun-obj-darwin-aarch64
|
||||
package: bun-darwin-aarch64
|
||||
artifact: bun-obj-darwin-aarch64
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-arm64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-arm64-lto.tar.gz"
|
||||
runner: macos-arm64
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
@@ -257,10 +282,15 @@ jobs:
|
||||
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
||||
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
||||
run: |
|
||||
brew install rust llvm@13 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
brew install rust ccache llvm@15 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
echo "export PATH=$(brew --prefix coreutils)/libexec/gnubin:\$PATH" >> $GITHUB_ENV
|
||||
echo "export PATH=$(brew --prefix llvm@13)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@13
|
||||
echo "export PATH=$(brew --prefix llvm@15)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@15
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ runner.os }}-ccache-${{ matrix.tag }}-link
|
||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}-link
|
||||
- name: Download WebKit
|
||||
env:
|
||||
CPU_TARGET: ${{ matrix.cpu }}
|
||||
|
||||
71
.github/workflows/bun-mac-x64-baseline.yml
vendored
71
.github/workflows/bun-mac-x64-baseline.yml
vendored
@@ -6,7 +6,7 @@ env:
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, bun-actions]
|
||||
branches: [main]
|
||||
paths:
|
||||
- "src/**/*"
|
||||
- "test/**/*"
|
||||
@@ -59,21 +59,40 @@ jobs:
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
if: runner.arch == 'X64'
|
||||
with:
|
||||
context: .
|
||||
push: false
|
||||
tags: ghcr.io/oven-sh/bun-obj:${{github.sha}}-${{matrix.cpu}}-${{matrix.arch}}-macos-baseline
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
cache-to: type=gha,mode=min
|
||||
build-args: |
|
||||
ARCH=${{ matrix.arch }}
|
||||
BUILDARCH=amd64
|
||||
BUILD_MACHINE_ARCH=x86_64
|
||||
CPU_TARGET=${{ matrix.cpu }}
|
||||
TRIPLET=${{matrix.arch}}-macos-none
|
||||
GIT_SHA=${{github.sha}}
|
||||
platforms: linux/amd64
|
||||
target: build_release_obj
|
||||
outputs: type=local,dest=${{runner.temp}}/release
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
if: runner.arch == 'ARM64'
|
||||
with:
|
||||
context: .
|
||||
push: false
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=min
|
||||
build-args: |
|
||||
ARCH=${{ matrix.arch }}
|
||||
BUILDARCH=arm64
|
||||
BUILD_MACHINE_ARCH=aarch64
|
||||
CPU_TARGET=${{ matrix.cpu }}
|
||||
TRIPLET=${{matrix.arch}}-macos-none
|
||||
GIT_SHA=${{github.sha}}
|
||||
platforms: linux/arm64
|
||||
target: build_release_obj
|
||||
outputs: type=local,dest=${{runner.temp}}/release
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ matrix.tag }}
|
||||
@@ -91,7 +110,7 @@ jobs:
|
||||
obj: bun-obj-darwin-x64-baseline
|
||||
runner: macos-11
|
||||
artifact: bun-obj-darwin-x64-baseline
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
dependencies: true
|
||||
compile_obj: false
|
||||
# - cpu: haswell
|
||||
@@ -100,7 +119,7 @@ jobs:
|
||||
# obj: bun-obj-darwin-x64
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# dependencies: true
|
||||
# compile_obj: false
|
||||
- cpu: westmere
|
||||
@@ -109,7 +128,7 @@ jobs:
|
||||
obj: bun-obj-darwin-x64-baseline
|
||||
runner: macos-11
|
||||
artifact: bun-obj-darwin-x64-baseline
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
dependencies: false
|
||||
compile_obj: true
|
||||
# - cpu: haswell
|
||||
@@ -118,7 +137,7 @@ jobs:
|
||||
# obj: bun-obj-darwin-x64
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# dependencies: false
|
||||
# compile_obj: true
|
||||
# - cpu: native
|
||||
@@ -126,7 +145,7 @@ jobs:
|
||||
# tag: bun-darwin-aarch64
|
||||
# obj: bun-obj-darwin-aarch64
|
||||
# artifact: bun-obj-darwin-aarch64
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# runner: macos-arm64
|
||||
# dependencies: true
|
||||
# compile_obj: true
|
||||
@@ -146,10 +165,23 @@ jobs:
|
||||
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
||||
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
||||
run: |
|
||||
brew install rust llvm@13 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
brew install ccache rust llvm@15 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
echo "export PATH=$(brew --prefix ccache)/bin:\$PATH" >> $GITHUB_ENV
|
||||
echo "export PATH=$(brew --prefix coreutils)/libexec/gnubin:\$PATH" >> $GITHUB_ENV
|
||||
echo "export PATH=$(brew --prefix llvm@13)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@13
|
||||
echo "export PATH=$(brew --prefix llvm@15)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@15
|
||||
- name: ccache (dependencies)
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
if: matrix.dependencies
|
||||
with:
|
||||
key: ${{ runner.os }}-ccache-${{ matrix.tag }}-dependencies
|
||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}-dependencies
|
||||
- name: ccache (c++)
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
if: matrix.compile_obj
|
||||
with:
|
||||
key: ${{ runner.os }}-ccache-${{ matrix.tag }}-obj
|
||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}-obj
|
||||
- name: Download WebKit
|
||||
if: matrix.compile_obj
|
||||
env:
|
||||
@@ -218,7 +250,7 @@ jobs:
|
||||
package: bun-darwin-x64
|
||||
runner: macos-11
|
||||
artifact: bun-obj-darwin-x64-baseline
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# - cpu: haswell
|
||||
# arch: x86_64
|
||||
# tag: bun-darwin-x64
|
||||
@@ -226,14 +258,14 @@ jobs:
|
||||
# package: bun-darwin-x64
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# - cpu: native
|
||||
# arch: aarch64
|
||||
# tag: bun-darwin-aarch64
|
||||
# obj: bun-obj-darwin-aarch64
|
||||
# package: bun-darwin-aarch64
|
||||
# artifact: bun-obj-darwin-aarch64
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# runner: macos-arm64
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
@@ -251,10 +283,15 @@ jobs:
|
||||
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
||||
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
||||
run: |
|
||||
brew install rust llvm@13 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
brew install ccache rust llvm@15 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
echo "export PATH=$(brew --prefix coreutils)/libexec/gnubin:\$PATH" >> $GITHUB_ENV
|
||||
echo "export PATH=$(brew --prefix llvm@13)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@13
|
||||
echo "export PATH=$(brew --prefix llvm@15)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@15
|
||||
- name: ccache (link)
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ runner.os }}-ccache-${{ matrix.tag }}-link
|
||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}-link
|
||||
- name: Download WebKit
|
||||
env:
|
||||
CPU_TARGET: ${{ matrix.cpu }}
|
||||
|
||||
67
.github/workflows/bun-mac-x64.yml
vendored
67
.github/workflows/bun-mac-x64.yml
vendored
@@ -6,7 +6,7 @@ env:
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, bun-actions]
|
||||
branches: [main]
|
||||
paths:
|
||||
- "src/**/*"
|
||||
- "test/**/*"
|
||||
@@ -59,6 +59,7 @@ jobs:
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
if: runner.arch == 'X64'
|
||||
with:
|
||||
context: .
|
||||
push: false
|
||||
@@ -67,12 +68,31 @@ jobs:
|
||||
build-args: |
|
||||
ARCH=${{ matrix.arch }}
|
||||
BUILDARCH=amd64
|
||||
BUILD_MACHINE_ARCH=x86_64
|
||||
CPU_TARGET=${{ matrix.cpu }}
|
||||
TRIPLET=${{matrix.arch}}-macos-none
|
||||
GIT_SHA=${{github.sha}}
|
||||
platforms: linux/amd64
|
||||
target: build_release_obj
|
||||
outputs: type=local,dest=${{runner.temp}}/release
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
if: runner.arch == 'ARM64'
|
||||
with:
|
||||
context: .
|
||||
push: false
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=min
|
||||
build-args: |
|
||||
ARCH=${{ matrix.arch }}
|
||||
BUILDARCH=arm64
|
||||
BUILD_MACHINE_ARCH=aarch64
|
||||
CPU_TARGET=${{ matrix.cpu }}
|
||||
TRIPLET=${{matrix.arch}}-macos-none
|
||||
GIT_SHA=${{github.sha}}
|
||||
platforms: linux/arm64
|
||||
target: build_release_obj
|
||||
outputs: type=local,dest=${{runner.temp}}/release
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ matrix.tag }}
|
||||
@@ -90,7 +110,7 @@ jobs:
|
||||
# obj: bun-obj-darwin-x64-baseline
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64-baseline
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# dependencies: true
|
||||
# compile_obj: false
|
||||
- cpu: haswell
|
||||
@@ -99,7 +119,7 @@ jobs:
|
||||
obj: bun-obj-darwin-x64
|
||||
runner: macos-11
|
||||
artifact: bun-obj-darwin-x64
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
dependencies: true
|
||||
compile_obj: false
|
||||
# - cpu: westmere
|
||||
@@ -108,7 +128,7 @@ jobs:
|
||||
# obj: bun-obj-darwin-x64-baseline
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64-baseline
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# dependencies: false
|
||||
# compile_obj: true
|
||||
- cpu: haswell
|
||||
@@ -117,7 +137,7 @@ jobs:
|
||||
obj: bun-obj-darwin-x64
|
||||
runner: macos-11
|
||||
artifact: bun-obj-darwin-x64
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
dependencies: false
|
||||
compile_obj: true
|
||||
# - cpu: native
|
||||
@@ -125,7 +145,7 @@ jobs:
|
||||
# tag: bun-darwin-aarch64
|
||||
# obj: bun-obj-darwin-aarch64
|
||||
# artifact: bun-obj-darwin-aarch64
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-arm64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-arm64-lto.tar.gz"
|
||||
# runner: macos-arm64
|
||||
# dependencies: true
|
||||
# compile_obj: true
|
||||
@@ -145,10 +165,10 @@ jobs:
|
||||
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
||||
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
||||
run: |
|
||||
brew install rust llvm@13 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
brew install rust ccache llvm@15 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
echo "export PATH=$(brew --prefix coreutils)/libexec/gnubin:\$PATH" >> $GITHUB_ENV
|
||||
echo "export PATH=$(brew --prefix llvm@13)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@13
|
||||
echo "export PATH=$(brew --prefix llvm@15)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@15
|
||||
- name: Download WebKit
|
||||
if: matrix.compile_obj
|
||||
env:
|
||||
@@ -164,6 +184,18 @@ jobs:
|
||||
rm -rf $JSC_BASE_DIR
|
||||
mkdir -p $JSC_BASE_DIR
|
||||
curl -L ${{ matrix.webkit_url }} | tar -xz -C $JSC_BASE_DIR --strip-components=1
|
||||
- name: ccache (dependencies)
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
if: matrix.dependencies
|
||||
with:
|
||||
key: ${{ runner.os }}-ccache-${{ matrix.tag }}-dependencies
|
||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}-dependencies
|
||||
- name: ccache (c++)
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
if: matrix.compile_obj
|
||||
with:
|
||||
key: ${{ runner.os }}-ccache-${{ matrix.tag }}-obj
|
||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}-obj
|
||||
- name: Compile dependencies
|
||||
if: matrix.dependencies
|
||||
env:
|
||||
@@ -220,7 +252,7 @@ jobs:
|
||||
# package: bun-darwin-x64
|
||||
# runner: macos-11
|
||||
# artifact: bun-obj-darwin-x64-baseline
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
- cpu: haswell
|
||||
arch: x86_64
|
||||
tag: bun-darwin-x64
|
||||
@@ -228,14 +260,14 @@ jobs:
|
||||
package: bun-darwin-x64
|
||||
runner: macos-11
|
||||
artifact: bun-obj-darwin-x64
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
||||
# - cpu: native
|
||||
# arch: aarch64
|
||||
# tag: bun-darwin-aarch64
|
||||
# obj: bun-obj-darwin-aarch64
|
||||
# package: bun-darwin-aarch64
|
||||
# artifact: bun-obj-darwin-aarch64
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-macos-arm64-lto.tar.gz"
|
||||
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-arm64-lto.tar.gz"
|
||||
# runner: macos-arm64
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
@@ -253,10 +285,10 @@ jobs:
|
||||
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
||||
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
||||
run: |
|
||||
brew install rust llvm@13 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
brew install rust ccache llvm@15 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
||||
echo "export PATH=$(brew --prefix coreutils)/libexec/gnubin:\$PATH" >> $GITHUB_ENV
|
||||
echo "export PATH=$(brew --prefix llvm@13)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@13
|
||||
echo "export PATH=$(brew --prefix llvm@15)/bin:\$PATH" >> $GITHUB_ENV
|
||||
brew link --overwrite llvm@15
|
||||
- name: Download WebKit
|
||||
env:
|
||||
CPU_TARGET: ${{ matrix.cpu }}
|
||||
@@ -287,6 +319,11 @@ jobs:
|
||||
with:
|
||||
name: ${{ matrix.obj }}
|
||||
path: ${{ runner.temp }}/release
|
||||
- name: ccache (link)
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ runner.os }}-ccache-${{ matrix.tag }}-link
|
||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}-link
|
||||
- name: Link
|
||||
env:
|
||||
CPU_TARGET: ${{ matrix.cpu }}
|
||||
|
||||
8
.github/workflows/bun-types-release.yml
vendored
8
.github/workflows/bun-types-release.yml
vendored
@@ -14,9 +14,9 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install bun
|
||||
uses: xhyrom/setup-bun@v0.1.6
|
||||
uses: xhyrom/setup-bun@v0.1.8
|
||||
with:
|
||||
bun-version: latest
|
||||
bun-version: canary
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Install node
|
||||
@@ -88,9 +88,9 @@ jobs:
|
||||
scope: '@oven-sh'
|
||||
|
||||
- name: Install bun
|
||||
uses: xhyrom/setup-bun@v0.1.6
|
||||
uses: xhyrom/setup-bun@v0.1.8
|
||||
with:
|
||||
bun-version: latest
|
||||
bun-version: canary
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Download all artifacts
|
||||
|
||||
3
.github/workflows/bun-types-tests.yml
vendored
3
.github/workflows/bun-types-tests.yml
vendored
@@ -3,6 +3,7 @@ on:
|
||||
push:
|
||||
paths:
|
||||
- packages/bun-types/**/*
|
||||
branches: [main]
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/bun-types/**/*
|
||||
@@ -20,7 +21,7 @@ jobs:
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Install bun
|
||||
uses: xhyrom/setup-bun@v0.1.6
|
||||
uses: xhyrom/setup-bun@v0.1.8
|
||||
with:
|
||||
bun-version: latest
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -104,3 +104,9 @@ src/runtime.version
|
||||
*.database
|
||||
*.db
|
||||
misctools/machbench
|
||||
*.big
|
||||
.eslintcache
|
||||
|
||||
bun-webkit
|
||||
|
||||
src/deps/c-ares/build
|
||||
|
||||
12
.gitmodules
vendored
12
.gitmodules
vendored
@@ -36,7 +36,7 @@ shallow = true
|
||||
fetchRecurseSubmodules = false
|
||||
[submodule "src/deps/boringssl"]
|
||||
path = src/deps/boringssl
|
||||
url = https://github.com/google/boringssl.git
|
||||
url = https://github.com/oven-sh/boringssl.git
|
||||
ignore = dirty
|
||||
depth = 1
|
||||
shallow = true
|
||||
@@ -62,10 +62,6 @@ ignore = dirty
|
||||
depth = 1
|
||||
shallow = true
|
||||
fetchRecurseSubmodules = false
|
||||
[submodule "src/deps/oniguruma"]
|
||||
path = src/deps/oniguruma
|
||||
url = https://github.com/kkos/oniguruma
|
||||
ignore = dirty
|
||||
depth = 1
|
||||
shallow = true
|
||||
fetchRecurseSubmodules = false
|
||||
[submodule "src/deps/c-ares"]
|
||||
path = src/deps/c-ares
|
||||
url = https://github.com/c-ares/c-ares.git
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
src/fallback.html
|
||||
# src/test
|
||||
bench
|
||||
test/bun.js/solid-dom-fixtures
|
||||
test/bun.js/bundled
|
||||
src/bun.js/builtins
|
||||
#src/bun.js/builtins
|
||||
# src/api/demo
|
||||
test/snapshots
|
||||
test/snapshots-no-hmr
|
||||
test/snapshots-no-hmr
|
||||
|
||||
9
.scripts/postinstall.sh
Executable file
9
.scripts/postinstall.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
set -euxo pipefail
|
||||
|
||||
# if bun-webkit node_modules directory exists
|
||||
if [ -d ./node_modules/bun-webkit ]; then
|
||||
rm -f bun-webkit
|
||||
# get the first matching bun-webkit-* directory name
|
||||
ln -s ./node_modules/$(ls ./node_modules | grep bun-webkit- | head -n 1) ./bun-webkit
|
||||
fi
|
||||
@@ -8,6 +8,10 @@ PICOHTTPPARSER_VERSION=$(git rev-parse HEAD:./src/deps/picohttpparser)
|
||||
BORINGSSL_VERSION=$(git rev-parse HEAD:./src/deps/boringssl)
|
||||
ZLIB_VERSION=$(git rev-parse HEAD:./src/deps/zlib)
|
||||
UWS_VERSION=$(git rev-parse HEAD:./src/deps/uws)
|
||||
LOLHTML=$(git rev-parse HEAD:./src/deps/lol-html)
|
||||
TINYCC=$(git rev-parse HEAD:./src/deps/tinycc)
|
||||
C_ARES=$(git rev-parse HEAD:./src/deps/c-ares)
|
||||
USOCKETS=$(cd src/deps/uws/uSockets && git rev-parse HEAD)
|
||||
|
||||
rm -rf src/generated_versions_list.zig
|
||||
echo "// AUTO-GENERATED FILE. Created via .scripts/write-versions.sh" >src/generated_versions_list.zig
|
||||
@@ -20,6 +24,9 @@ echo "pub const uws = \"$UWS_VERSION\";" >>src/generated_versions_list.zig
|
||||
echo "pub const webkit = \"$WEBKIT_VERSION\";" >>src/generated_versions_list.zig
|
||||
echo "pub const zig = @import(\"std\").fmt.comptimePrint(\"{}\", .{@import(\"builtin\").zig_version});" >>src/generated_versions_list.zig
|
||||
echo "pub const zlib = \"$ZLIB_VERSION\";" >>src/generated_versions_list.zig
|
||||
echo "pub const tinycc = \"$TINYCC\";" >>src/generated_versions_list.zig
|
||||
echo "pub const lolhtml = \"$LOLHTML\";" >>src/generated_versions_list.zig
|
||||
echo "pub const c_ares = \"$C_ARES\";" >>src/generated_versions_list.zig
|
||||
echo "" >>src/generated_versions_list.zig
|
||||
|
||||
zig fmt src/generated_versions_list.zig
|
||||
|
||||
7
.vscode/c_cpp_properties.json
vendored
7
.vscode/c_cpp_properties.json
vendored
@@ -4,6 +4,8 @@
|
||||
"name": "Mac",
|
||||
"forcedInclude": ["${workspaceFolder}/src/bun.js/bindings/root.h"],
|
||||
"includePath": [
|
||||
"${workspaceFolder}/../webkit-build/include/",
|
||||
"${workspaceFolder}/bun-webkit/include/",
|
||||
"${workspaceFolder}/src/bun.js/WebKit/WebKitBuild/Release/",
|
||||
"${workspaceFolder}/src/bun.js/WebKit/WebKitBuild/Release/ICU/Headers/",
|
||||
"${workspaceFolder}/src/bun.js/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders/",
|
||||
@@ -22,6 +24,8 @@
|
||||
],
|
||||
"browse": {
|
||||
"path": [
|
||||
"${workspaceFolder}/../webkit-build/include/",
|
||||
"${workspaceFolder}/bun-webkit/include/",
|
||||
"${workspaceFolder}/src/bun.js/WebKit/WebKitBuild/Release/",
|
||||
"${workspaceFolder}/src/bun.js/WebKit/WebKitBuild/Release/ICU/Headers/",
|
||||
"${workspaceFolder}/src/bun.js/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders/**",
|
||||
@@ -55,8 +59,7 @@
|
||||
"macFrameworkPath": [],
|
||||
"compilerPath": "/opt/homebrew/opt/llvm/bin/clang++",
|
||||
"cStandard": "c17",
|
||||
"cppStandard": "c++20",
|
||||
"intelliSenseMode": "macos-clang-x64"
|
||||
"cppStandard": "c++20"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
|
||||
75
.vscode/launch.json
generated
vendored
75
.vscode/launch.json
generated
vendored
@@ -19,9 +19,10 @@
|
||||
"name": "bun test (all)",
|
||||
"program": "bun-debug",
|
||||
"args": ["wiptest"],
|
||||
"cwd": "${workspaceFolder}/test/bun.js",
|
||||
"cwd": "${workspaceFolder}/test",
|
||||
"env": {
|
||||
"FORCE_COLOR": "1"
|
||||
"FORCE_COLOR": "1",
|
||||
"BUN_GARBAGE_COLLECTOR_LEVEL": "2"
|
||||
},
|
||||
"console": "internalConsole"
|
||||
},
|
||||
@@ -30,8 +31,20 @@
|
||||
"request": "launch",
|
||||
"name": "bun run current file",
|
||||
"program": "bun-debug",
|
||||
"args": ["-i", "${file}"],
|
||||
"cwd": "${file}/../",
|
||||
"args": ["${file}"],
|
||||
"cwd": "${file}/../../",
|
||||
"env": {
|
||||
"FORCE_COLOR": "1"
|
||||
},
|
||||
"console": "internalConsole"
|
||||
},
|
||||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "bun run (hot)",
|
||||
"program": "bun-debug",
|
||||
"args": ["--hot", "${file}"],
|
||||
"cwd": "${file}/../../",
|
||||
"env": {
|
||||
"FORCE_COLOR": "1"
|
||||
},
|
||||
@@ -96,6 +109,43 @@
|
||||
"cwd": "${workspaceFolder}",
|
||||
"console": "internalConsole"
|
||||
},
|
||||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "bun build debug",
|
||||
"program": "bun-debug",
|
||||
"args": ["build", "--platform=bun", "--outdir=/tmp/testout", "${file}"],
|
||||
"cwd": "${file}/../../",
|
||||
"console": "internalConsole",
|
||||
"env": {
|
||||
"BUN_CONFIG_MINIFY_WHITESPACE": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "bunx debug",
|
||||
"program": "bun-debug",
|
||||
"args": ["--bun", "x", "tsc", "--help"],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"console": "internalConsole",
|
||||
"env": {
|
||||
"BUN_DEBUG_QUIET_LOGS": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "bun install",
|
||||
"program": "bun-debug",
|
||||
"args": ["install"],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"console": "internalConsole",
|
||||
"env": {
|
||||
"BUN_DEBUG_QUIET_LOGS": "1"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
@@ -108,10 +158,19 @@
|
||||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "bun link test",
|
||||
"program": "bun-debug",
|
||||
"args": ["install"],
|
||||
"cwd": "${workspaceFolder}/test/fixtures/bun-link-to-pkg-fixture",
|
||||
"name": "Build zig unit test",
|
||||
"program": "make",
|
||||
"args": ["build-unit", "${file}"],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"console": "internalConsole"
|
||||
},
|
||||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "Run zig unit test",
|
||||
"program": "${workspaceFolder}/zig-out/bin/test",
|
||||
"args": ["abc"],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"console": "internalConsole"
|
||||
}
|
||||
]
|
||||
|
||||
13
.vscode/settings.json
vendored
13
.vscode/settings.json
vendored
@@ -7,10 +7,13 @@
|
||||
"search.followSymlinks": false,
|
||||
"search.useIgnoreFiles": true,
|
||||
"zig.buildOnSave": false,
|
||||
"zig.buildArgs": ["obj", "-Dfor-editor"],
|
||||
"zig.buildOption": "build",
|
||||
"zig.buildFilePath": "${workspaceFolder}/build.zig",
|
||||
"[zig]": {
|
||||
"editor.tabSize": 4,
|
||||
"editor.useTabStops": false,
|
||||
"editor.defaultFormatter": "AugusteRame.zls-vscode",
|
||||
"editor.defaultFormatter": "tiehuis.zig",
|
||||
"editor.formatOnSave": true
|
||||
},
|
||||
"[ts]": {
|
||||
@@ -54,6 +57,8 @@
|
||||
"src/deps/uws": true,
|
||||
"src/deps/zlib": true,
|
||||
"src/deps/lol-html": true,
|
||||
"src/deps/c-ares": true,
|
||||
"src/deps/tinycc": true,
|
||||
"test/snippets/package-json-exports/_node_modules_copy": true
|
||||
},
|
||||
"C_Cpp.files.exclude": {
|
||||
@@ -181,7 +186,5 @@
|
||||
},
|
||||
"cmake.configureOnOpen": false,
|
||||
"C_Cpp.errorSquiggles": "Enabled",
|
||||
"eslint.workingDirectories": [
|
||||
"packages/bun-types"
|
||||
]
|
||||
}
|
||||
"eslint.workingDirectories": ["packages/bun-types"]
|
||||
}
|
||||
|
||||
140
Dockerfile
140
Dockerfile
@@ -7,17 +7,20 @@ ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
|
||||
ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
|
||||
ARG CPU_TARGET=native
|
||||
ARG ARCH=x86_64
|
||||
ARG BUILD_MACHINE_ARCH=x86_64
|
||||
ARG TRIPLET=${ARCH}-linux-gnu
|
||||
ARG BUILDARCH=amd64
|
||||
ARG WEBKIT_TAG=jul27-2
|
||||
ARG ZIG_TAG=jul1
|
||||
ARG ZIG_VERSION="0.11.0-dev.947+cf822c6dd"
|
||||
ARG WEBKIT_BASENAME="bun-webkit-linux-$BUILDARCH"
|
||||
|
||||
ARG ZIG_FOLDERNAME=zig-linux-${BUILD_MACHINE_ARCH}-${ZIG_VERSION}
|
||||
ARG ZIG_FILENAME=${ZIG_FOLDERNAME}.tar.xz
|
||||
ARG WEBKIT_URL="https://github.com/oven-sh/WebKit/releases/download/$WEBKIT_TAG/${WEBKIT_BASENAME}.tar.gz"
|
||||
|
||||
ARG ZIG_URL="https://github.com/oven-sh/zig/releases/download/$ZIG_TAG/zig-linux-$BUILDARCH.zip"
|
||||
ARG ZIG_URL="https://ziglang.org/builds/${ZIG_FILENAME}"
|
||||
ARG GIT_SHA=""
|
||||
ARG BUN_BASE_VERSION=0.2
|
||||
|
||||
ARG BUN_BASE_VERSION=0.4
|
||||
|
||||
FROM bitnami/minideb:bullseye as bun-base
|
||||
|
||||
@@ -25,7 +28,7 @@ RUN install_packages ca-certificates curl wget lsb-release software-properties-c
|
||||
|
||||
RUN wget https://apt.llvm.org/llvm.sh && \
|
||||
chmod +x llvm.sh && \
|
||||
./llvm.sh 13
|
||||
./llvm.sh 15
|
||||
|
||||
RUN install_packages \
|
||||
cmake \
|
||||
@@ -43,10 +46,11 @@ RUN install_packages \
|
||||
rsync \
|
||||
ruby \
|
||||
unzip \
|
||||
bash tar gzip
|
||||
xz-utils \
|
||||
bash tar gzip ccache
|
||||
|
||||
ENV CXX=clang++-13
|
||||
ENV CC=clang-13
|
||||
ENV CXX=clang++-15
|
||||
ENV CC=clang-15
|
||||
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \
|
||||
install_packages nodejs && \
|
||||
@@ -63,13 +67,15 @@ ARG BUILDARCH
|
||||
ARG ZIG_PATH
|
||||
ARG WEBKIT_URL
|
||||
ARG ZIG_URL
|
||||
ARG ZIG_FOLDERNAME
|
||||
ARG ZIG_FILENAME
|
||||
|
||||
ENV WEBKIT_OUT_DIR=${WEBKIT_DIR}
|
||||
ENV BUILDARCH=${BUILDARCH}
|
||||
ENV AR=/usr/bin/llvm-ar-13
|
||||
ENV AR=/usr/bin/llvm-ar-15
|
||||
ENV ZIG "${ZIG_PATH}/zig"
|
||||
ENV PATH="$ZIG/bin:$PATH"
|
||||
ENV LD=lld-13
|
||||
ENV LD=lld-15
|
||||
|
||||
RUN mkdir -p $BUN_DIR $BUN_DEPS_OUT_DIR
|
||||
|
||||
@@ -78,8 +84,8 @@ FROM bun-base as bun-base-with-zig-and-webkit
|
||||
WORKDIR $GITHUB_WORKSPACE
|
||||
|
||||
ADD $ZIG_URL .
|
||||
RUN unzip -q zig-linux-$BUILDARCH.zip && \
|
||||
rm zig-linux-$BUILDARCH.zip;
|
||||
RUN tar xf ${ZIG_FILENAME} && \
|
||||
rm ${ZIG_FILENAME} && mv ${ZIG_FOLDERNAME} zig;
|
||||
|
||||
|
||||
|
||||
@@ -105,6 +111,30 @@ RUN mkdir -p ${WEBKIT_DIR} && cd ${GITHUB_WORKSPACE} && \
|
||||
LABEL org.opencontainers.image.title="bun base image with zig & webkit ${BUILDARCH} (glibc)"
|
||||
LABEL org.opencontainers.image.source=https://github.com/oven-sh/bun
|
||||
|
||||
FROM bun-base as c-ares
|
||||
|
||||
ARG DEBIAN_FRONTEND
|
||||
ARG GITHUB_WORKSPACE
|
||||
ARG ZIG_PATH
|
||||
# Directory extracts to "bun-webkit"
|
||||
ARG WEBKIT_DIR
|
||||
ARG BUN_RELEASE_DIR
|
||||
ARG BUN_DEPS_OUT_DIR
|
||||
ARG BUN_DIR
|
||||
ARG CPU_TARGET
|
||||
|
||||
ENV CPU_TARGET=${CPU_TARGET}
|
||||
ENV CCACHE_DIR=/ccache
|
||||
ENV JSC_BASE_DIR=${WEBKIT_DIR}
|
||||
ENV LIB_ICU_PATH=${WEBKIT_DIR}/lib
|
||||
|
||||
COPY Makefile ${BUN_DIR}/Makefile
|
||||
COPY src/deps/c-ares ${BUN_DIR}/src/deps/c-ares
|
||||
|
||||
WORKDIR $BUN_DIR
|
||||
|
||||
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && make c-ares && rm -rf ${BUN_DIR}/src/deps/c-ares ${BUN_DIR}/Makefile
|
||||
|
||||
|
||||
FROM bun-base as lolhtml
|
||||
|
||||
@@ -122,7 +152,9 @@ ARG BUN_DIR
|
||||
COPY Makefile ${BUN_DIR}/Makefile
|
||||
COPY src/deps/lol-html ${BUN_DIR}/src/deps/lol-html
|
||||
|
||||
RUN export PATH=$PATH:$HOME/.cargo/bin && export CC=$(which clang-13) && cd ${BUN_DIR} && \
|
||||
ENV CCACHE_DIR=/ccache
|
||||
|
||||
RUN --mount=type=cache,target=/ccache export PATH=$PATH:$HOME/.cargo/bin && export CC=$(which clang-15) && cd ${BUN_DIR} && \
|
||||
make lolhtml && rm -rf src/deps/lol-html Makefile
|
||||
|
||||
FROM bun-base as mimalloc
|
||||
@@ -141,7 +173,9 @@ COPY src/deps/mimalloc ${BUN_DIR}/src/deps/mimalloc
|
||||
ARG CPU_TARGET
|
||||
ENV CPU_TARGET=${CPU_TARGET}
|
||||
|
||||
RUN cd ${BUN_DIR} && \
|
||||
ENV CCACHE_DIR=/ccache
|
||||
|
||||
RUN --mount=type=cache,target=/ccache cd ${BUN_DIR} && \
|
||||
make mimalloc && rm -rf src/deps/mimalloc Makefile
|
||||
|
||||
FROM bun-base as zlib
|
||||
@@ -162,7 +196,9 @@ COPY src/deps/zlib ${BUN_DIR}/src/deps/zlib
|
||||
|
||||
WORKDIR $BUN_DIR
|
||||
|
||||
RUN cd $BUN_DIR && \
|
||||
ENV CCACHE_DIR=/ccache
|
||||
|
||||
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && \
|
||||
make zlib && rm -rf src/deps/zlib Makefile
|
||||
|
||||
FROM bun-base as libarchive
|
||||
@@ -183,29 +219,14 @@ RUN install_packages autoconf automake libtool pkg-config
|
||||
COPY Makefile ${BUN_DIR}/Makefile
|
||||
COPY src/deps/libarchive ${BUN_DIR}/src/deps/libarchive
|
||||
|
||||
RUN cd $BUN_DIR && \
|
||||
ENV CCACHE_DIR=/ccache
|
||||
WORKDIR $BUN_DIR
|
||||
|
||||
|
||||
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && \
|
||||
make libarchive && rm -rf src/deps/libarchive Makefile
|
||||
|
||||
FROM bun-base as oniguruma
|
||||
|
||||
ARG DEBIAN_FRONTEND
|
||||
ARG GITHUB_WORKSPACE
|
||||
ARG ZIG_PATH
|
||||
# Directory extracts to "bun-webkit"
|
||||
ARG WEBKIT_DIR
|
||||
ARG BUN_RELEASE_DIR
|
||||
ARG BUN_DEPS_OUT_DIR
|
||||
ARG BUN_DIR
|
||||
ARG CPU_TARGET
|
||||
ENV CPU_TARGET=${CPU_TARGET}
|
||||
|
||||
RUN install_packages autoconf automake libtool pkg-config
|
||||
|
||||
COPY Makefile ${BUN_DIR}/Makefile
|
||||
COPY src/deps/oniguruma ${BUN_DIR}/src/deps/oniguruma
|
||||
|
||||
WORKDIR $BUN_DIR
|
||||
RUN make oniguruma && rm -rf src/deps/oniguruma Makefile
|
||||
|
||||
FROM bun-base as tinycc
|
||||
|
||||
@@ -242,7 +263,9 @@ COPY src/deps/boringssl ${BUN_DIR}/src/deps/boringssl
|
||||
|
||||
WORKDIR $BUN_DIR
|
||||
|
||||
RUN make boringssl && rm -rf src/deps/boringssl Makefile
|
||||
ENV CCACHE_DIR=/ccache
|
||||
|
||||
RUN --mount=type=cache,target=/ccache cd ${BUN_DIR} && make boringssl && rm -rf src/deps/boringssl Makefile
|
||||
|
||||
FROM bun-base as uws
|
||||
|
||||
@@ -280,6 +303,8 @@ ARG BUN_RELEASE_DIR
|
||||
ARG BUN_DEPS_OUT_DIR
|
||||
ARG BUN_DIR
|
||||
ARG CPU_TARGET
|
||||
|
||||
|
||||
ENV CPU_TARGET=${CPU_TARGET}
|
||||
|
||||
COPY Makefile ${BUN_DIR}/Makefile
|
||||
@@ -351,11 +376,12 @@ ENV CPU_TARGET=${CPU_TARGET}
|
||||
|
||||
WORKDIR $BUN_DIR
|
||||
|
||||
COPY ./root.zig ${BUN_DIR}/root.zig
|
||||
COPY ./src ${BUN_DIR}/src
|
||||
COPY ./build.zig ${BUN_DIR}/build.zig
|
||||
COPY ./completions ${BUN_DIR}/completions
|
||||
COPY ./packages ${BUN_DIR}/packages
|
||||
COPY ./build-id ${BUN_DIR}/build-id
|
||||
COPY ./src/build-id ${BUN_DIR}/src/build-id
|
||||
COPY ./package.json ${BUN_DIR}/package.json
|
||||
COPY ./misctools ${BUN_DIR}/misctools
|
||||
COPY Makefile ${BUN_DIR}/Makefile
|
||||
@@ -393,12 +419,14 @@ ENV GIT_SHA=${GIT_SHA}
|
||||
COPY --from=identifier_cache ${BUN_DIR}/src/js_lexer/*.blob ${BUN_DIR}/src/js_lexer/
|
||||
COPY --from=node_fallbacks ${BUN_DIR}/src/node-fallbacks/out ${BUN_DIR}/src/node-fallbacks/out
|
||||
|
||||
COPY ./build-id ${BUN_DIR}/build-id
|
||||
COPY ./src/build-id ${BUN_DIR}/src/build-id
|
||||
|
||||
RUN cd $BUN_DIR && mkdir -p src/bun.js/bindings-obj && rm -rf $HOME/.cache zig-cache && make prerelease && \
|
||||
ENV CCACHE_DIR=/ccache
|
||||
|
||||
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && mkdir -p src/bun.js/bindings-obj && rm -rf $HOME/.cache zig-cache && make prerelease && \
|
||||
mkdir -p $BUN_RELEASE_DIR && \
|
||||
OUTPUT_DIR=/tmp $ZIG_PATH/zig build obj -Drelease-fast -Dtarget="${TRIPLET}" -Dcpu="${CPU_TARGET}" && \
|
||||
cp /tmp/bun.o /tmp/bun-${BUN_BASE_VERSION}.$(cat ${BUN_DIR}/build-id).o && cd / && rm -rf $BUN_DIR
|
||||
OUTPUT_DIR=/tmp/bun-${TRIPLET}-${GIT_SHA} $ZIG_PATH/zig build obj -Doutput-dir=/tmp/bun-${TRIPLET}-${GIT_SHA} -Drelease-fast -Dtarget="${TRIPLET}" -Dcpu="${CPU_TARGET}" && \
|
||||
cp /tmp/bun-${TRIPLET}-${GIT_SHA}/bun.o /tmp/bun-${TRIPLET}-${GIT_SHA}/bun-${BUN_BASE_VERSION}.$(cat ${BUN_DIR}/src/build-id).o && cd / && rm -rf $BUN_DIR
|
||||
|
||||
FROM scratch as build_release_obj
|
||||
|
||||
@@ -409,12 +437,13 @@ ARG ZIG_PATH
|
||||
ARG WEBKIT_DIR
|
||||
ARG BUN_RELEASE_DIR
|
||||
ARG BUN_DEPS_OUT_DIR
|
||||
ARG GIT_SHA
|
||||
ARG TRIPLET
|
||||
ARG BUN_DIR
|
||||
ARG CPU_TARGET
|
||||
ENV CPU_TARGET=${CPU_TARGET}
|
||||
|
||||
|
||||
COPY --from=compile_release_obj /tmp/*.o /
|
||||
COPY --from=compile_release_obj /tmp/bun-${TRIPLET}-${GIT_SHA}/*.o /
|
||||
|
||||
FROM prepare_release as compile_cpp
|
||||
|
||||
@@ -436,24 +465,15 @@ WORKDIR $BUN_DIR
|
||||
ENV JSC_BASE_DIR=${WEBKIT_DIR}
|
||||
ENV LIB_ICU_PATH=${WEBKIT_DIR}/lib
|
||||
|
||||
COPY --from=boringssl ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=zlib ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=lolhtml ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=mimalloc ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=libarchive ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=oniguruma ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=picohttp ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=uws ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=uws ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=tinycc ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
|
||||
# Required for `make webcrypto`
|
||||
COPY src/deps/boringssl/include ${BUN_DIR}/src/deps/boringssl/include
|
||||
|
||||
RUN cd $BUN_DIR && mkdir -p src/bun.js/bindings-obj && rm -rf $HOME/.cache zig-cache && mkdir -p $BUN_RELEASE_DIR && make webcrypto && \
|
||||
ENV CCACHE_DIR=/ccache
|
||||
|
||||
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && mkdir -p src/bun.js/bindings-obj && rm -rf $HOME/.cache zig-cache && mkdir -p $BUN_RELEASE_DIR && make webcrypto && \
|
||||
make release-bindings -j10 && mv ${BUN_DEPS_OUT_DIR}/libwebcrypto.a /tmp && mv src/bun.js/bindings-obj/* /tmp
|
||||
|
||||
FROM prepare_release as sqlite
|
||||
FROM bun-base as sqlite
|
||||
|
||||
ARG DEBIAN_FRONTEND
|
||||
ARG GITHUB_WORKSPACE
|
||||
@@ -464,14 +484,17 @@ ARG BUN_RELEASE_DIR
|
||||
ARG BUN_DEPS_OUT_DIR
|
||||
ARG BUN_DIR
|
||||
|
||||
ENV CCACHE_DIR=/ccache
|
||||
|
||||
COPY Makefile ${BUN_DIR}/Makefile
|
||||
COPY src/bun.js/bindings/sqlite ${BUN_DIR}/src/bun.js/bindings/sqlite
|
||||
|
||||
WORKDIR $BUN_DIR
|
||||
|
||||
ENV JSC_BASE_DIR=${WEBKIT_DIR}
|
||||
ENV LIB_ICU_PATH=${WEBKIT_DIR}/lib
|
||||
|
||||
RUN cd $BUN_DIR && make sqlite
|
||||
RUN --mount=type=cache,target=/ccache cd $BUN_DIR && make sqlite
|
||||
|
||||
FROM scratch as build_release_cpp
|
||||
|
||||
@@ -503,12 +526,13 @@ COPY --from=libarchive ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=boringssl ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=lolhtml ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=mimalloc ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=oniguruma ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=picohttp ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=sqlite ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=tinycc ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=uws ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=uws ${BUN_DEPS_OUT_DIR}/*.o ${BUN_DEPS_OUT_DIR}/
|
||||
COPY --from=c-ares ${BUN_DEPS_OUT_DIR}/*.a ${BUN_DEPS_OUT_DIR}/
|
||||
|
||||
COPY --from=build_release_obj /*.o /tmp
|
||||
COPY --from=build_release_cpp /*.o ${BUN_DIR}/src/bun.js/bindings-obj/
|
||||
COPY --from=build_release_cpp /*.a ${BUN_DEPS_OUT_DIR}/
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
ARG GITHUB_WORKSPACE=/build
|
||||
ARG BUILDARCH=amd64
|
||||
ARG ARCH=x86_64
|
||||
ARG ZIG_PATH=${GITHUB_WORKSPACE}/zig
|
||||
ARG WEBKIT_DIR=${GITHUB_WORKSPACE}/bun-webkit
|
||||
ARG BUN_RELEASE_DIR=${GITHUB_WORKSPACE}/bun-release
|
||||
ARG BUN_DEPS_OUT_DIR=${GITHUB_WORKSPACE}/bun-deps
|
||||
ARG BUN_DIR=${GITHUB_WORKSPACE}/bun
|
||||
ARG BUN_PACKAGES_DIR=${BUN_DIR}/packages
|
||||
ARG ZIG_VERSION="0.11.0-dev.947+cf822c6dd"
|
||||
|
||||
ARG ZIG_FOLDERNAME=zig-linux-${ARCH}-${ZIG_VERSION}
|
||||
ARG ZIG_FILENAME=${ZIG_FOLDERNAME}.tar.xz
|
||||
ARG ZIG_URL="https://ziglang.org/builds/${ZIG_FILENAME}"
|
||||
|
||||
FROM --platform=linux/${BUILDARCH} ubuntu:22.04 as bun.devcontainer
|
||||
|
||||
@@ -37,7 +43,7 @@ RUN apt-get update && \
|
||||
add-apt-repository ppa:longsleep/golang-backports && \
|
||||
wget https://apt.llvm.org/llvm.sh --no-check-certificate && \
|
||||
chmod +x llvm.sh && \
|
||||
./llvm.sh 13 && \
|
||||
./llvm.sh 15 && \
|
||||
curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && \
|
||||
apt-get update && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
@@ -50,16 +56,16 @@ RUN apt-get update && \
|
||||
git \
|
||||
libssl-dev \
|
||||
ruby \
|
||||
liblld-13-dev \
|
||||
libclang-13-dev \
|
||||
liblld-15-dev \
|
||||
libclang-15-dev \
|
||||
nodejs \
|
||||
gcc \
|
||||
g++ \
|
||||
clang-13 \
|
||||
clang-format-13 \
|
||||
libc++-13-dev \
|
||||
libc++abi-13-dev \
|
||||
lld-13 \
|
||||
clang-15 \
|
||||
clang-format-15 \
|
||||
libc++-15-dev \
|
||||
libc++abi-15-dev \
|
||||
lld-15 \
|
||||
libicu-dev \
|
||||
wget \
|
||||
rustc \
|
||||
@@ -67,35 +73,38 @@ RUN apt-get update && \
|
||||
unzip \
|
||||
tar \
|
||||
golang-go ninja-build pkg-config automake autoconf libtool curl && \
|
||||
update-alternatives --install /usr/bin/cc cc /usr/bin/clang-13 90 && \
|
||||
update-alternatives --install /usr/bin/cpp cpp /usr/bin/clang++-13 90 && \
|
||||
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-13 90 && \
|
||||
update-alternatives --install /usr/bin/cc cc /usr/bin/clang-15 90 && \
|
||||
update-alternatives --install /usr/bin/cpp cpp /usr/bin/clang++-15 90 && \
|
||||
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-15 90 && \
|
||||
npm install -g esbuild
|
||||
|
||||
ENV CC=clang-13
|
||||
ENV CXX=clang++-13
|
||||
ENV CC=clang-15
|
||||
ENV CXX=clang++-15
|
||||
ENV ZIG "${ZIG_PATH}/zig"
|
||||
|
||||
|
||||
|
||||
WORKDIR $GITHUB_WORKSPACE
|
||||
|
||||
RUN cd / && mkdir -p $BUN_RELEASE_DIR $BUN_DEPS_OUT_DIR ${BUN_DIR} ${BUN_DEPS_OUT_DIR}
|
||||
|
||||
WORKDIR $GITHUB_WORKSPACE
|
||||
|
||||
RUN cd $GITHUB_WORKSPACE && \
|
||||
curl -o zig-linux-$BUILDARCH.zip -L https://github.com/oven-sh/zig/releases/download/jul1/zig-linux-$BUILDARCH.zip && \
|
||||
unzip -q zig-linux-$BUILDARCH.zip && \
|
||||
rm zig-linux-$BUILDARCH.zip;
|
||||
|
||||
ARG ZIG_FOLDERNAME
|
||||
ARG ZIG_FILENAME
|
||||
ARG ZIG_URL
|
||||
|
||||
ADD $ZIG_URL .
|
||||
RUN tar -xf ${ZIG_FILENAME} && \
|
||||
rm ${ZIG_FILENAME} && \
|
||||
mv ${ZIG_FOLDERNAME} ${ZIG_PATH};
|
||||
|
||||
RUN cd $GITHUB_WORKSPACE && \
|
||||
curl -o bun-webkit-linux-$BUILDARCH.tar.gz -L https://github.com/oven-sh/WebKit/releases/download/oct28/bun-webkit-linux-$BUILDARCH.tar.gz && \
|
||||
curl -o bun-webkit-linux-$BUILDARCH.tar.gz -L https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-linux-$BUILDARCH.tar.gz && \
|
||||
tar -xzf bun-webkit-linux-$BUILDARCH.tar.gz && \
|
||||
rm bun-webkit-linux-$BUILDARCH.tar.gz && \
|
||||
cat $WEBKIT_OUT_DIR/include/cmakeconfig.h > /dev/null
|
||||
|
||||
RUN apt-get -y update && update-alternatives --install /usr/bin/lldb lldb /usr/bin/lldb-13 90
|
||||
RUN apt-get -y update && update-alternatives --install /usr/bin/lldb lldb /usr/bin/lldb-15 90
|
||||
|
||||
COPY .devcontainer/workspace.code-workspace $GITHUB_WORKSPACE/workspace.code-workspace
|
||||
COPY .devcontainer/zls.json $GITHUB_WORKSPACE/workspace.code-workspace
|
||||
|
||||
231
Makefile
231
Makefile
@@ -4,6 +4,10 @@ OS_NAME := $(shell uname -s | tr '[:upper:]' '[:lower:]')
|
||||
ARCH_NAME_RAW := $(shell uname -m)
|
||||
BUN_AUTO_UPDATER_REPO = Jarred-Sumner/bun-releases-for-updater
|
||||
|
||||
CMAKE_CXX_COMPILER_LAUNCHER_FLAG :=
|
||||
|
||||
|
||||
|
||||
# 'make' command will trigger the help target
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
@@ -35,7 +39,7 @@ NATIVE_OR_OLD_MARCH = -march=westmere
|
||||
endif
|
||||
|
||||
MIN_MACOS_VERSION ?= $(DEFAULT_MIN_MACOS_VERSION)
|
||||
BUN_BASE_VERSION = 0.2
|
||||
BUN_BASE_VERSION = 0.4
|
||||
|
||||
AR=
|
||||
|
||||
@@ -50,12 +54,12 @@ DEBUG_PACKAGE_DIR = $(PACKAGES_REALPATH)/debug-$(PACKAGE_NAME)
|
||||
RELEASE_BUN = $(PACKAGE_DIR)/bun
|
||||
DEBUG_BIN = $(DEBUG_PACKAGE_DIR)/
|
||||
DEBUG_BUN = $(DEBUG_BIN)/bun-debug
|
||||
BUILD_ID = $(shell cat ./build-id)
|
||||
BUILD_ID = $(shell cat ./src/build-id)
|
||||
PACKAGE_JSON_VERSION = $(BUN_BASE_VERSION).$(BUILD_ID)
|
||||
BUN_BUILD_TAG = bun-v$(PACKAGE_JSON_VERSION)
|
||||
BUN_RELEASE_BIN = $(PACKAGE_DIR)/bun
|
||||
PRETTIER ?= $(shell which prettier || echo "./node_modules/.bin/prettier")
|
||||
DSYMUTIL ?= $(shell which dsymutil || which dsymutil-13)
|
||||
DSYMUTIL ?= $(shell which dsymutil || which dsymutil-15)
|
||||
WEBKIT_DIR ?= $(realpath src/bun.js/WebKit)
|
||||
WEBKIT_RELEASE_DIR ?= $(WEBKIT_DIR)/WebKitBuild/Release
|
||||
WEBKIT_DEBUG_DIR ?= $(WEBKIT_DIR)/WebKitBuild/Debug
|
||||
@@ -70,20 +74,39 @@ ZIG ?= $(shell which zig || echo -e "error: Missing zig. Please make sure zig is
|
||||
# This is easier to happen than you'd expect.
|
||||
# Using realpath here causes issues because clang uses clang++ as a symlink
|
||||
# so if that's resolved, it won't build for C++
|
||||
CC = $(shell which clang-13 || which clang)
|
||||
CXX = $(shell which clang++-13 || which clang++)
|
||||
REAL_CC = $(shell which clang-15 || which clang)
|
||||
REAL_CXX = $(shell which clang++-15 || which clang++)
|
||||
|
||||
CC = $(REAL_CC)
|
||||
CXX = $(REAL_CXX)
|
||||
CCACHE_CC_OR_CC := $(REAL_CC)
|
||||
|
||||
CCACHE_PATH := $(shell which ccache 2>/dev/null)
|
||||
|
||||
CCACHE_CC_FLAG = CC=$(CCACHE_CC_OR_CC)
|
||||
|
||||
ifeq (,$(findstring,$(shell which ccache),ccache))
|
||||
CMAKE_CXX_COMPILER_LAUNCHER_FLAG := -DCMAKE_CXX_COMPILER_LAUNCHER=$(CCACHE_PATH) -DCMAKE_C_COMPILER_LAUNCHER=$(CCACHE_PATH)
|
||||
CCACHE_CC_OR_CC := "$(CCACHE_PATH) $(REAL_CC)"
|
||||
export CCACHE_COMPILERTYPE = clang
|
||||
CCACHE_CC_FLAG = CC=$(CCACHE_CC_OR_CC) CCACHE_COMPILER=$(REAL_CC)
|
||||
CCACHE_CXX_FLAG = CXX=$(CCACHE_PATH) CCACHE_COMPILER=$(REAL_CXX)
|
||||
endif
|
||||
|
||||
CXX_WITH_CCACHE = $(CCACHE_PATH) $(CXX)
|
||||
CC_WITH_CCACHE = $(CCACHE_PATH) $(CC)
|
||||
|
||||
ifeq ($(OS_NAME),darwin)
|
||||
# Find LLVM
|
||||
ifeq ($(wildcard $(LLVM_PREFIX)),)
|
||||
LLVM_PREFIX = $(shell brew --prefix llvm@13)
|
||||
LLVM_PREFIX = $(shell brew --prefix llvm@15)
|
||||
endif
|
||||
ifeq ($(wildcard $(LLVM_PREFIX)),)
|
||||
LLVM_PREFIX = $(shell brew --prefix llvm)
|
||||
endif
|
||||
ifeq ($(wildcard $(LLVM_PREFIX)),)
|
||||
# This is kinda ugly, but I can't find a better way to error :(
|
||||
LLVM_PREFIX = $(shell echo -e "error: Unable to find llvm. Please run 'brew install llvm@13' or set LLVM_PREFIX=/path/to/llvm")
|
||||
LLVM_PREFIX = $(shell echo -e "error: Unable to find llvm. Please run 'brew install llvm@15' or set LLVM_PREFIX=/path/to/llvm")
|
||||
endif
|
||||
|
||||
LDFLAGS += -L$(LLVM_PREFIX)/lib
|
||||
@@ -118,7 +141,15 @@ LIBICONV_PATH ?= $(BREW_PREFIX_PATH)/opt/libiconv/lib/libiconv.a
|
||||
|
||||
OPENSSL_LINUX_DIR = $(BUN_DEPS_DIR)/openssl/openssl-OpenSSL_1_1_1l
|
||||
|
||||
CMAKE_FLAGS_WITHOUT_RELEASE = -DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX) -DCMAKE_OSX_DEPLOYMENT_TARGET=$(MIN_MACOS_VERSION)
|
||||
CMAKE_FLAGS_WITHOUT_RELEASE = -DCMAKE_C_COMPILER=$(CC) \
|
||||
-DCMAKE_CXX_COMPILER=$(CXX) \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=$(MIN_MACOS_VERSION) \
|
||||
$(CMAKE_CXX_COMPILER_LAUNCHER_FLAG) \
|
||||
-DCMAKE_AR=$(AR) \
|
||||
-DCMAKE_RANLIB=$(which llvm-15-ranlib || which llvm-ranlib)
|
||||
|
||||
|
||||
|
||||
CMAKE_FLAGS = $(CMAKE_FLAGS_WITHOUT_RELEASE) -DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
# SQLite3 is dynamically linked on macOS
|
||||
@@ -127,24 +158,23 @@ CMAKE_FLAGS = $(CMAKE_FLAGS_WITHOUT_RELEASE) -DCMAKE_BUILD_TYPE=Release
|
||||
SQLITE_OBJECT =
|
||||
|
||||
|
||||
BITCODE_OR_SECTIONS=
|
||||
EMBED_OR_EMIT_BITCODE=
|
||||
|
||||
LIBTOOL=libtoolize
|
||||
ifeq ($(OS_NAME),darwin)
|
||||
LIBTOOL=glibtoolize
|
||||
AR=$(LLVM_PREFIX)/bin/llvm-ar
|
||||
BITCODE_OR_SECTIONS=-fembed-bitcode
|
||||
BITCODE_OR_SECTIONS=
|
||||
endif
|
||||
|
||||
ifeq ($(OS_NAME),linux)
|
||||
LIBICONV_PATH =
|
||||
AR = $(shell which llvm-ar-13 || which llvm-ar || which ar)
|
||||
AR = $(shell which llvm-ar-15 || which llvm-ar || which ar)
|
||||
endif
|
||||
|
||||
OPTIMIZATION_LEVEL=-O3 $(MARCH_NATIVE)
|
||||
DEBUG_OPTIMIZATION_LEVEL= -O1 $(MARCH_NATIVE)
|
||||
CFLAGS_WITHOUT_MARCH = $(MACOS_MIN_FLAG) $(BITCODE_OR_SECTIONS) $(OPTIMIZATION_LEVEL) -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden
|
||||
BUN_CFLAGS = $(MACOS_MIN_FLAG) $(MARCH_NATIVE) $(EMBED_OR_EMIT_BITCODE) $(OPTIMIZATION_LEVEL) -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden
|
||||
CFLAGS_WITHOUT_MARCH = $(MACOS_MIN_FLAG) $(OPTIMIZATION_LEVEL) -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden
|
||||
BUN_CFLAGS = $(MACOS_MIN_FLAG) $(MARCH_NATIVE) $(OPTIMIZATION_LEVEL) -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden
|
||||
BUN_TMP_DIR := /tmp/make-bun
|
||||
CFLAGS=$(CFLAGS_WITHOUT_MARCH) $(MARCH_NATIVE)
|
||||
|
||||
@@ -153,18 +183,26 @@ DEFAULT_USE_BMALLOC := 1
|
||||
|
||||
USE_BMALLOC ?= DEFAULT_USE_BMALLOC
|
||||
|
||||
JSC_BASE_DIR ?= ${HOME}/webkit-build
|
||||
# Set via postinstall
|
||||
AUTO_JSX_BASE_DIR ?= $(realpath $(firstword $(wildcard bun-webkit)))
|
||||
|
||||
ifeq (,$(AUTO_JSX_BASE_DIR))
|
||||
AUTO_JSX_BASE_DIR ?= $(HOME)/webkit-build
|
||||
endif
|
||||
|
||||
JSC_BASE_DIR ?= $(AUTO_JSX_BASE_DIR)
|
||||
|
||||
DEFAULT_JSC_LIB :=
|
||||
DEFAULT_JSC_LIB_DEBUG :=
|
||||
|
||||
ifeq ($(OS_NAME),linux)
|
||||
DEFAULT_JSC_LIB = $(JSC_BASE_DIR)/lib
|
||||
DEFAULT_JSC_LIB_DEBUG = $(DEFAULT_JSC_LIB)
|
||||
|
||||
ifneq (,$(realpath $(WEBKIT_RELEASE_DIR_LTO)/lib))
|
||||
DEFAULT_JSC_LIB = $(WEBKIT_RELEASE_DIR_LTO)/lib
|
||||
endif
|
||||
|
||||
ifeq ($(OS_NAME),darwin)
|
||||
DEFAULT_JSC_LIB = $(WEBKIT_RELEASE_DIR_LTO)/lib
|
||||
ifneq (,$(realpath $(WEBKIT_RELEASE_DIR)/lib))
|
||||
DEFAULT_JSC_LIB_DEBUG = $(WEBKIT_RELEASE_DIR)/lib
|
||||
endif
|
||||
|
||||
@@ -228,7 +266,7 @@ STRIP=/usr/bin/strip
|
||||
endif
|
||||
|
||||
ifeq ($(OS_NAME),linux)
|
||||
STRIP=$(shell which llvm-strip || which llvm-strip-13 || which strip || echo "Missing strip")
|
||||
STRIP=$(shell which llvm-strip || which llvm-strip-15 || which strip || echo "Missing strip")
|
||||
endif
|
||||
|
||||
|
||||
@@ -300,7 +338,7 @@ LINUX_INCLUDE_DIRS := $(ALL_JSC_INCLUDE_DIRS) \
|
||||
UWS_INCLUDE_DIR := -I$(BUN_DEPS_DIR)/uws/uSockets/src -I$(BUN_DEPS_DIR)/uws/src -I$(BUN_DEPS_DIR)
|
||||
|
||||
|
||||
INCLUDE_DIRS := $(UWS_INCLUDE_DIR) -I$(BUN_DEPS_DIR)/mimalloc/include -Isrc/napi -I$(BUN_DEPS_DIR)/boringssl/include
|
||||
INCLUDE_DIRS := $(UWS_INCLUDE_DIR) -I$(BUN_DEPS_DIR)/mimalloc/include -Isrc/napi -I$(BUN_DEPS_DIR)/boringssl/include -I$(BUN_DEPS_DIR)/c-ares/include
|
||||
|
||||
|
||||
ifeq ($(OS_NAME),linux)
|
||||
@@ -367,7 +405,7 @@ ifeq ($(OS_NAME), darwin)
|
||||
SYMBOLS=-exported_symbols_list $(realpath src/symbols.txt)
|
||||
PLATFORM_LINKER_FLAGS += -DDU_DISABLE_RENAMING=1 \
|
||||
-lstdc++ \
|
||||
-fno-keep-static-consts
|
||||
-fno-keep-static-consts -lresolv
|
||||
endif
|
||||
|
||||
ifeq ($(OS_NAME),linux)
|
||||
@@ -377,7 +415,7 @@ endif
|
||||
SHARED_LIB_EXTENSION = .so
|
||||
|
||||
JSC_BINDINGS = $(BINDINGS_OBJ) $(JSC_FILES)
|
||||
JSC_BINDINGS_DEBUG = $(DEBUG_BINDINGS_OBJ) $(JSC_FILES_DEBUG)
|
||||
JSC_BINDINGS_DEBUG = $(DEBUG_BINDINGS_OBJ) $(JSC_FILES_DEBUG)
|
||||
|
||||
RELEASE_FLAGS=
|
||||
DEBUG_FLAGS=
|
||||
@@ -394,22 +432,38 @@ MINIMUM_ARCHIVE_FILES = -L$(BUN_DEPS_OUT_DIR) \
|
||||
-lz \
|
||||
$(BUN_DEPS_OUT_DIR)/picohttpparser.o \
|
||||
$(_MIMALLOC_LINK) \
|
||||
-ldecrepit \
|
||||
-lssl \
|
||||
-lcrypto \
|
||||
-llolhtml \
|
||||
-lonig
|
||||
-llolhtml
|
||||
|
||||
ARCHIVE_FILES_WITHOUT_LIBCRYPTO = $(MINIMUM_ARCHIVE_FILES) \
|
||||
-larchive \
|
||||
-ltcc \
|
||||
-lusockets \
|
||||
-lcares \
|
||||
$(BUN_DEPS_OUT_DIR)/libuwsockets.o
|
||||
|
||||
ARCHIVE_FILES = $(ARCHIVE_FILES_WITHOUT_LIBCRYPTO)
|
||||
ARCHIVE_FILES = $(ARCHIVE_FILES_WITHOUT_LIBCRYPTO)
|
||||
|
||||
STATIC_MUSL_FLAG ?=
|
||||
|
||||
WRAP_SYMBOLS_ON_LINUX =
|
||||
|
||||
ifeq ($(OS_NAME), linux)
|
||||
WRAP_SYMBOLS_ON_LINUX = -Wl,--wrap=fcntl -Wl,--wrap=fcntl64 -Wl,--wrap=stat64 -Wl,--wrap=pow -Wl,--wrap=exp -Wl,--wrap=log -Wl,--wrap=log2 \
|
||||
-Wl,--wrap=lstat \
|
||||
-Wl,--wrap=stat \
|
||||
-Wl,--wrap=fstat \
|
||||
-Wl,--wrap=fstatat \
|
||||
-Wl,--wrap=lstat64 \
|
||||
-Wl,--wrap=stat64 \
|
||||
-Wl,--wrap=fstat64 \
|
||||
-Wl,--wrap=fstatat64 \
|
||||
-Wl,--wrap=mknod \
|
||||
-Wl,--wrap=mknodat \
|
||||
-Wl,--wrap=statx
|
||||
|
||||
PLATFORM_LINKER_FLAGS = $(BUN_CFLAGS) \
|
||||
-fuse-ld=lld \
|
||||
-Wl,-z,now \
|
||||
@@ -420,15 +474,15 @@ PLATFORM_LINKER_FLAGS = $(BUN_CFLAGS) \
|
||||
-static-libgcc \
|
||||
-fno-omit-frame-pointer \
|
||||
-Wl,--compress-debug-sections,zlib \
|
||||
-l:libatomic.a \
|
||||
${STATIC_MUSL_FLAG} \
|
||||
-Wl,-Bsymbolic-functions \
|
||||
-fno-semantic-interposition \
|
||||
-flto \
|
||||
-Wl,--allow-multiple-definition \
|
||||
-rdynamic
|
||||
|
||||
|
||||
|
||||
|
||||
endif
|
||||
|
||||
|
||||
@@ -441,9 +495,9 @@ BUN_LLD_FLAGS_WITHOUT_JSC = $(ARCHIVE_FILES) \
|
||||
|
||||
|
||||
|
||||
BUN_LLD_FLAGS = $(BUN_LLD_FLAGS_WITHOUT_JSC) $(JSC_FILES) $(BINDINGS_OBJ) -lwebcrypto
|
||||
BUN_LLD_FLAGS_DEBUG = $(BUN_LLD_FLAGS_WITHOUT_JSC) $(JSC_FILES_DEBUG) $(DEBUG_BINDINGS_OBJ) -lwebcrypto-debug
|
||||
BUN_LLD_FLAGS_FAST = $(BUN_LLD_FLAGS_WITHOUT_JSC) $(JSC_FILES_DEBUG) $(BINDINGS_OBJ) -lwebcrypto-debug
|
||||
BUN_LLD_FLAGS = $(BUN_LLD_FLAGS_WITHOUT_JSC) $(WRAP_SYMBOLS_ON_LINUX) $(JSC_FILES) $(BINDINGS_OBJ) -lwebcrypto
|
||||
BUN_LLD_FLAGS_DEBUG = $(BUN_LLD_FLAGS_WITHOUT_JSC) $(WRAP_SYMBOLS_ON_LINUX) $(JSC_FILES_DEBUG) $(DEBUG_BINDINGS_OBJ) -lwebcrypto-debug
|
||||
BUN_LLD_FLAGS_FAST = $(BUN_LLD_FLAGS_WITHOUT_JSC) $(WRAP_SYMBOLS_ON_LINUX) $(JSC_FILES_DEBUG) $(BINDINGS_OBJ) -lwebcrypto-debug
|
||||
|
||||
CLANG_VERSION = $(shell $(CC) --version | awk '/version/ {for(i=1; i<=NF; i++){if($$i=="version"){split($$(i+1),v,".");print v[1]}}}')
|
||||
|
||||
@@ -452,7 +506,7 @@ CLANG_VERSION = $(shell $(CC) --version | awk '/version/ {for(i=1; i<=NF; i++){i
|
||||
bun:
|
||||
|
||||
npm-install:
|
||||
$(NPM_CLIENT) install
|
||||
$(NPM_CLIENT) install --ignore-scripts --production
|
||||
|
||||
print-% : ; @echo $* = $($*)
|
||||
|
||||
@@ -469,7 +523,7 @@ TINYCC_CFLAGS= -DTCC_LIBTCC1=\"\0\"
|
||||
tinycc:
|
||||
cd $(TINYCC_DIR) && \
|
||||
make clean && \
|
||||
AR=$(AR) CC=$(CC) CFLAGS='$(CFLAGS_WITHOUT_MARCH) $(NATIVE_OR_OLD_MARCH) -mtune=native $(TINYCC_CFLAGS)' ./configure --enable-static --cc=$(CC) --ar=$(AR) --config-predefs=yes && \
|
||||
AR=$(AR) $(CCACHE_CC_FLAG) CFLAGS='$(CFLAGS_WITHOUT_MARCH) $(NATIVE_OR_OLD_MARCH) -mtune=native $(TINYCC_CFLAGS)' ./configure --enable-static --cc=$(CCACHE_CC_OR_CC) --ar=$(AR) --config-predefs=yes && \
|
||||
make -j10 && \
|
||||
cp $(TINYCC_DIR)/*.a $(BUN_DEPS_OUT_DIR)
|
||||
|
||||
@@ -495,8 +549,7 @@ builtins: ## to generate builtins
|
||||
.PHONY: generate-builtins
|
||||
generate-builtins: builtins
|
||||
|
||||
.PHONY: vendor-without-check
|
||||
vendor-without-check: npm-install node-fallbacks runtime_js fallback_decoder bun_error mimalloc picohttp zlib boringssl libarchive lolhtml usockets uws tinycc oniguruma
|
||||
|
||||
|
||||
BUN_TYPES_REPO_PATH ?= $(realpath packages/bun-types)
|
||||
|
||||
@@ -504,6 +557,14 @@ ifeq ($(DEBUG),true)
|
||||
BUN_RELEASE_BIN = bun
|
||||
endif
|
||||
|
||||
.PHONY: c-ares
|
||||
c-ares:
|
||||
rm -rf $(BUN_DEPS_DIR)/c-ares/build && \
|
||||
mkdir $(BUN_DEPS_DIR)/c-ares/build && \
|
||||
cd $(BUN_DEPS_DIR)/c-ares/build && \
|
||||
cmake $(CMAKE_FLAGS) -DCMAKE_C_FLAGS="$(CFLAGS) -flto=full" -DCMAKE_BUILD_TYPE=Release -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON -DCARES_SHARED=OFF -G "Ninja" .. && \
|
||||
ninja && cp lib/libcares.a $(BUN_DEPS_OUT_DIR)/libcares.a
|
||||
|
||||
.PHONY: prepare-types
|
||||
prepare-types:
|
||||
BUN_VERSION=$(PACKAGE_JSON_VERSION) $(BUN_RELEASE_BIN) $(BUN_TYPES_REPO_PATH)/scripts/bundle.ts $(BUN_TYPES_REPO_PATH)/dist
|
||||
@@ -529,7 +590,7 @@ lolhtml:
|
||||
# no asm is not worth it!!
|
||||
.PHONY: boringssl-build
|
||||
boringssl-build:
|
||||
cd $(BUN_DEPS_DIR)/boringssl && mkdir -p build && cd build && CFLAGS="$(CFLAGS)" cmake $(CMAKE_FLAGS) -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" -GNinja .. && ninja
|
||||
cd $(BUN_DEPS_DIR)/boringssl && mkdir -p build && cd build && CFLAGS="$(CFLAGS)" cmake $(CMAKE_FLAGS) -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" -GNinja .. && ninja libcrypto.a libssl.a libdecrepit.a
|
||||
|
||||
.PHONY: boringssl-build-debug
|
||||
boringssl-build-debug:
|
||||
@@ -538,6 +599,7 @@ boringssl-build-debug:
|
||||
boringssl-copy:
|
||||
cp $(BUN_DEPS_DIR)/boringssl/build/ssl/libssl.a $(BUN_DEPS_OUT_DIR)/libssl.a
|
||||
cp $(BUN_DEPS_DIR)/boringssl/build/crypto/libcrypto.a $(BUN_DEPS_OUT_DIR)/libcrypto.a
|
||||
cp $(BUN_DEPS_DIR)/boringssl/build/decrepit/libdecrepit.a $(BUN_DEPS_OUT_DIR)/libdecrepit.a
|
||||
|
||||
.PHONY: boringssl
|
||||
boringssl: boringssl-build boringssl-copy
|
||||
@@ -548,14 +610,6 @@ boringssl-debug: boringssl-build-debug boringssl-copy
|
||||
compile-ffi-test:
|
||||
clang $(OPTIMIZATION_LEVEL) -shared -undefined dynamic_lookup -o /tmp/bun-ffi-test.dylib -fPIC ./test/bun.js/ffi-test.c
|
||||
|
||||
.PHONY: oniguruma
|
||||
oniguruma:
|
||||
cd $(BUN_DEPS_DIR)/oniguruma && \
|
||||
autoreconf -vfi && \
|
||||
CFLAGS="$(CFLAGS)" CC=$(CC) ./configure && \
|
||||
make -j${CPUS} && \
|
||||
cp ./src/.libs/libonig.a $(BUN_DEPS_OUT_DIR)/libonig.a
|
||||
|
||||
sqlite:
|
||||
|
||||
|
||||
@@ -565,7 +619,7 @@ libarchive:
|
||||
(make clean || echo ""); \
|
||||
(./build/clean.sh || echo ""); \
|
||||
./build/autogen.sh; \
|
||||
CFLAGS="$(CFLAGS)" CC=$(CC) ./configure --disable-shared --enable-static --with-pic --disable-bsdtar --disable-bsdcat --disable-rpath --enable-posix-regex-lib --without-xml2 --without-expat --without-openssl --without-iconv --without-zlib; \
|
||||
CFLAGS="$(CFLAGS)" $(CCACHE_CC_FLAG) ./configure --disable-shared --enable-static --with-pic --disable-bsdtar --disable-bsdcat --disable-rpath --enable-posix-regex-lib --without-xml2 --without-expat --without-openssl --without-iconv --without-zlib; \
|
||||
make -j${CPUS}; \
|
||||
cp ./.libs/libarchive.a $(BUN_DEPS_OUT_DIR)/libarchive.a;
|
||||
|
||||
@@ -581,11 +635,8 @@ tgz-debug:
|
||||
$(CXX) $(DEBUG_PACKAGE_DIR)/tgz.o -g -o ./misctools/tgz $(DEFAULT_LINKER_FLAGS) -lc $(ARCHIVE_FILES)
|
||||
rm -rf $(DEBUG_PACKAGE_DIR)/tgz.o
|
||||
|
||||
vendor: require init-submodules vendor-without-check
|
||||
|
||||
zlib:
|
||||
cd $(BUN_DEPS_DIR)/zlib; CFLAGS="$(CFLAGS)" cmake $(CMAKE_FLAGS) .; CFLAGS="$(CFLAGS)" make;
|
||||
cp $(BUN_DEPS_DIR)/zlib/libz.a $(BUN_DEPS_OUT_DIR)/libz.a
|
||||
cd $(BUN_DEPS_DIR)/zlib; make clean; $(CCACHE_CC_FLAG) CFLAGS="$(CFLAGS)" ./configure --static && make -j${CPUS} && cp ./libz.a $(BUN_DEPS_OUT_DIR)/libz.a
|
||||
|
||||
ifeq ($(POSIX_PKG_MANAGER), brew)
|
||||
PKGNAME_NINJA := ninja
|
||||
@@ -596,7 +647,7 @@ endif
|
||||
.PHONY: require
|
||||
require:
|
||||
@echo "Checking if the required utilities are available..."
|
||||
@if [ $(CLANG_VERSION) -lt "13" ]; then echo -e "ERROR: clang version >=13 required, found: $(CLANG_VERSION). Install with:\n\n $(POSIX_PKG_MANAGER) install llvm@13"; exit 1; fi
|
||||
@if [ $(CLANG_VERSION) -lt "15" ]; then echo -e "ERROR: clang version >=15 required, found: $(CLANG_VERSION). Install with:\n\n $(POSIX_PKG_MANAGER) install llvm@15"; exit 1; fi
|
||||
@cmake --version >/dev/null 2>&1 || (echo -e "ERROR: cmake is required."; exit 1)
|
||||
@esbuild --version >/dev/null 2>&1 || (echo -e "ERROR: esbuild is required."; exit 1)
|
||||
@$(NPM_CLIENT) --version >/dev/null 2>&1 || (echo -e "ERROR: NPM client (bun or npm) is required."; exit 1)
|
||||
@@ -675,12 +726,12 @@ USOCKETS_SRC_DIR = $(BUN_DEPS_DIR)/uws/uSockets/src/
|
||||
|
||||
usockets:
|
||||
rm -rf $(BUN_DEPS_DIR)/uws/uSockets/*.o $(BUN_DEPS_DIR)/uws/uSockets/**/*.o $(BUN_DEPS_DIR)/uws/uSockets/*.a $(BUN_DEPS_DIR)/uws/uSockets/*.bc
|
||||
cd $(USOCKETS_DIR) && $(CC) -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc $(EMIT_LLVM_FOR_RELEASE) $(MACOS_MIN_FLAG) -fPIC $(CFLAGS) $(UWS_CC_FLAGS) -save-temps -I$(BUN_DEPS_DIR)/uws/uSockets/src $(UWS_LDFLAGS) -g $(DEFAULT_LINKER_FLAGS) $(PLATFORM_LINKER_FLAGS) $(OPTIMIZATION_LEVEL) -g -c $(wildcard $(USOCKETS_SRC_DIR)/*.c) $(wildcard $(USOCKETS_SRC_DIR)/**/*.c)
|
||||
cd $(USOCKETS_DIR) && $(CXX) -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc $(EMIT_LLVM_FOR_RELEASE) $(MACOS_MIN_FLAG) -fPIC $(CXXFLAGS) $(UWS_CXX_FLAGS) -save-temps -I$(BUN_DEPS_DIR)/uws/uSockets/src $(UWS_LDFLAGS) -g $(DEFAULT_LINKER_FLAGS) $(PLATFORM_LINKER_FLAGS) $(OPTIMIZATION_LEVEL) -g -c $(wildcard $(USOCKETS_SRC_DIR)/*.cpp) $(wildcard $(USOCKETS_SRC_DIR)/**/*.cpp)
|
||||
cd $(USOCKETS_DIR) && $(CC_WITH_CCACHE) -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc $(EMIT_LLVM_FOR_RELEASE) $(MACOS_MIN_FLAG) -fPIC $(CFLAGS) $(UWS_CC_FLAGS) -save-temps -I$(BUN_DEPS_DIR)/uws/uSockets/src $(UWS_LDFLAGS) -g $(DEFAULT_LINKER_FLAGS) $(PLATFORM_LINKER_FLAGS) $(OPTIMIZATION_LEVEL) -g -c $(wildcard $(USOCKETS_SRC_DIR)/*.c) $(wildcard $(USOCKETS_SRC_DIR)/**/*.c)
|
||||
cd $(USOCKETS_DIR) && $(CXX_WITH_CCACHE) -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc $(EMIT_LLVM_FOR_RELEASE) $(MACOS_MIN_FLAG) -fPIC $(CXXFLAGS) $(UWS_CXX_FLAGS) -save-temps -I$(BUN_DEPS_DIR)/uws/uSockets/src $(UWS_LDFLAGS) -g $(DEFAULT_LINKER_FLAGS) $(PLATFORM_LINKER_FLAGS) $(OPTIMIZATION_LEVEL) -g -c $(wildcard $(USOCKETS_SRC_DIR)/*.cpp) $(wildcard $(USOCKETS_SRC_DIR)/**/*.cpp)
|
||||
cd $(USOCKETS_DIR) && $(AR) rcvs $(BUN_DEPS_OUT_DIR)/libusockets.a $(USOCKETS_DIR)/*.{o,bc}
|
||||
|
||||
uws: usockets
|
||||
$(CXX) $(BITCODE_OR_SECTIONS) $(EMIT_LLVM_FOR_RELEASE) -fPIC -I$(BUN_DEPS_DIR)/uws/uSockets/src $(CLANG_FLAGS) $(CFLAGS) $(UWS_CXX_FLAGS) $(UWS_LDFLAGS) $(PLATFORM_LINKER_FLAGS) -c -I$(BUN_DEPS_DIR) $(BUN_DEPS_OUT_DIR)/libusockets.a $(BUN_DEPS_DIR)/libuwsockets.cpp -o $(BUN_DEPS_OUT_DIR)/libuwsockets.o
|
||||
$(CXX_WITH_CCACHE) $(EMIT_LLVM_FOR_RELEASE) -fPIC -I$(BUN_DEPS_DIR)/uws/uSockets/src $(CLANG_FLAGS) $(CFLAGS) $(UWS_CXX_FLAGS) $(UWS_LDFLAGS) $(PLATFORM_LINKER_FLAGS) -c -I$(BUN_DEPS_DIR) $(BUN_DEPS_OUT_DIR)/libusockets.a $(BUN_DEPS_DIR)/libuwsockets.cpp -o $(BUN_DEPS_OUT_DIR)/libuwsockets.o
|
||||
|
||||
.PHONY: sign-macos-x64
|
||||
sign-macos-x64:
|
||||
@@ -846,7 +897,7 @@ clone-submodules:
|
||||
git -c submodule."src/bun.js/WebKit".update=none submodule update --init --recursive --depth=1 --progress
|
||||
|
||||
.PHONY: devcontainer
|
||||
devcontainer: $(OBJ_DIR) $(DEBUG_OBJ_DIR) clone-submodules mimalloc zlib libarchive boringssl picohttp identifier-cache node-fallbacks npm-install api analytics bun_error fallback_decoder bindings uws lolhtml usockets tinycc runtime_js_dev sqlite oniguruma webcrypto-debug webcrypto
|
||||
devcontainer: $(OBJ_DIR) $(DEBUG_OBJ_DIR) clone-submodules mimalloc zlib libarchive boringssl picohttp identifier-cache node-fallbacks npm-install api analytics bun_error fallback_decoder bindings uws lolhtml usockets tinycc c-ares runtime_js_dev sqlite webcrypto-debug webcrypto
|
||||
|
||||
.PHONY: devcontainer-build
|
||||
devcontainer-build:
|
||||
@@ -884,7 +935,7 @@ MIMALLOC_OVERRIDE_FLAG ?=
|
||||
|
||||
|
||||
bump:
|
||||
expr 0.2.0 + 1 > build-id
|
||||
expr 0.4.0 + 1 > build-id
|
||||
|
||||
.PHONY: identifier-cache
|
||||
identifier-cache:
|
||||
@@ -1192,6 +1243,11 @@ jsc-copy-headers:
|
||||
cp $(WEBKIT_DIR)/Source/JavaScriptCore/bytecode/OperandsInlines.h $(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders/JavaScriptCore/OperandsInlines.h
|
||||
cp $(WEBKIT_DIR)/Source/JavaScriptCore/bytecode/Operands.h $(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders/JavaScriptCore/Operands.h
|
||||
cp $(WEBKIT_DIR)/Source/JavaScriptCore/domjit/DOMJITHeapRange.h $(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders/JavaScriptCore/DOMJITHeapRange.h
|
||||
cp $(WEBKIT_DIR)/Source/JavaScriptCore/runtime/GeneratorPrototype.h $(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders/JavaScriptCore/GeneratorPrototype.h
|
||||
cp $(WEBKIT_DIR)/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.h $(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders/JavaScriptCore/GeneratorFunctionPrototype.h
|
||||
cp $(WEBKIT_DIR)/Source/JavaScriptCore/runtime/AsyncFunctionPrototype.h $(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders/JavaScriptCore/AsyncFunctionPrototype.h
|
||||
cp $(WEBKIT_DIR)/Source/JavaScriptCore/runtime/SymbolObject.h $(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders/JavaScriptCore/SymbolObject.h
|
||||
cp $(WEBKIT_DIR)/Source/JavaScriptCore/runtime/JSGenerator.h $(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders/JavaScriptCore/JSGenerator.h
|
||||
find $(WEBKIT_RELEASE_DIR)/JavaScriptCore/Headers/JavaScriptCore/ -name "*.h" -exec cp {} $(WEBKIT_RELEASE_DIR)/JavaScriptCore/PrivateHeaders/JavaScriptCore/ \;
|
||||
|
||||
# This is a workaround for a JSC bug that impacts aarch64
|
||||
@@ -1220,7 +1276,7 @@ jsc-build-mac-compile:
|
||||
-DUSE_PTHREAD_JIT_PERMISSIONS_API=ON \
|
||||
$(WEBKIT_DIR) \
|
||||
$(WEBKIT_RELEASE_DIR) && \
|
||||
CFLAGS="$(CFLAGS) $(BITCODE_OR_SECTIONS) -ffat-lto-objects" CXXFLAGS="$(CXXFLAGS) $(BITCODE_OR_SECTIONS) -ffat-lto-objects" \
|
||||
CFLAGS="$(CFLAGS) -ffat-lto-objects" CXXFLAGS="$(CXXFLAGS) -ffat-lto-objects" \
|
||||
cmake --build $(WEBKIT_RELEASE_DIR) --config Release --target jsc
|
||||
|
||||
.PHONY: jsc-build-mac-compile-lto
|
||||
@@ -1322,6 +1378,7 @@ clean: clean-bindings
|
||||
(cd $(BUN_DEPS_DIR)/boringssl && make clean) || echo "";
|
||||
(cd $(BUN_DEPS_DIR)/picohttp && make clean) || echo "";
|
||||
(cd $(BUN_DEPS_DIR)/zlib && make clean) || echo "";
|
||||
(cd $(BUN_DEPS_DIR)/c-ares && rm -rf build && make clean) || echo "";
|
||||
|
||||
.PHONY: release-bindings
|
||||
release-bindings: $(OBJ_DIR) $(OBJ_FILES) $(WEBCORE_OBJ_FILES) $(SQLITE_OBJ_FILES) $(NODE_OS_OBJ_FILES) $(BUILTINS_OBJ_FILES) $(IO_FILES) $(MODULES_OBJ_FILES)
|
||||
@@ -1389,6 +1446,7 @@ bun-link-lld-debug:
|
||||
$(DEBUG_BIN)/bun-debug.o \
|
||||
-W \
|
||||
-o $(DEBUG_BIN)/bun-debug
|
||||
@rm -f $(DEBUG_BIN)/bun-debug.o.o 2> /dev/null # workaround for https://github.com/ziglang/zig/issues/14080
|
||||
|
||||
bun-link-lld-debug-no-jsc:
|
||||
$(CXX) $(BUN_LLD_FLAGS_WITHOUT_JSC) $(SYMBOLS) \
|
||||
@@ -1417,6 +1475,7 @@ bun-link-lld-release:
|
||||
$(OPTIMIZATION_LEVEL) $(RELEASE_FLAGS)
|
||||
rm -rf $(BUN_RELEASE_BIN).dSYM
|
||||
cp $(BUN_RELEASE_BIN) $(BUN_RELEASE_BIN)-profile
|
||||
@rm -f $(BUN_RELEASE_BIN).o.o # workaround for https://github.com/ziglang/zig/issues/14080
|
||||
|
||||
bun-release-copy-obj:
|
||||
cp $(BUN_RELEASE_BIN).o $(BUN_DEPLOY_DIR).o
|
||||
@@ -1458,9 +1517,11 @@ wasm-return1:
|
||||
generate-classes:
|
||||
bun src/bun.js/scripts/generate-classes.ts
|
||||
$(ZIG) fmt src/bun.js/bindings/generated_classes.zig
|
||||
clang-format -i src/bun.js/bindings/ZigGeneratedClasses.h src/bun.js/bindings/ZigGeneratedClasses.cpp
|
||||
|
||||
generate-sink:
|
||||
bun src/bun.js/scripts/generate-jssink.js
|
||||
clang-format -i src/bun.js/bindings/JSSink.cpp src/bun.js/bindings/JSSink.h
|
||||
$(WEBKIT_DIR)/Source/JavaScriptCore/create_hash_table src/bun.js/bindings/JSSink.cpp > src/bun.js/bindings/JSSinkLookupTable.h
|
||||
$(SED) -i -e 's/#include "Lookup.h"//' src/bun.js/bindings/JSSinkLookupTable.h
|
||||
$(SED) -i -e 's/namespace JSC {//' src/bun.js/bindings/JSSinkLookupTable.h
|
||||
@@ -1481,7 +1542,7 @@ $(DEBUG_OBJ_DIR):
|
||||
mkdir -p $(DEBUG_OBJ_DIR)
|
||||
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) $(UWS_INCLUDE) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) $(UWS_INCLUDE) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
@@ -1491,7 +1552,7 @@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
|
||||
-c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: src/bun.js/modules/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) $(UWS_INCLUDE) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) $(UWS_INCLUDE) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
@@ -1501,7 +1562,7 @@ $(OBJ_DIR)/%.o: src/bun.js/modules/%.cpp
|
||||
-c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/webcore/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
@@ -1511,7 +1572,7 @@ $(OBJ_DIR)/%.o: $(SRC_DIR)/webcore/%.cpp
|
||||
-c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/sqlite/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
@@ -1521,7 +1582,7 @@ $(OBJ_DIR)/%.o: $(SRC_DIR)/sqlite/%.cpp
|
||||
-c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: src/io/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
@@ -1531,7 +1592,7 @@ $(OBJ_DIR)/%.o: src/io/%.cpp
|
||||
-c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/node_os/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
@@ -1541,7 +1602,7 @@ $(OBJ_DIR)/%.o: $(SRC_DIR)/node_os/%.cpp
|
||||
-c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: src/bun.js/builtins/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
@@ -1552,89 +1613,103 @@ $(OBJ_DIR)/%.o: src/bun.js/builtins/%.cpp
|
||||
|
||||
# $(DEBUG_OBJ_DIR) is not included here because it breaks
|
||||
# detecting if a file needs to be rebuilt
|
||||
.PHONY: $(SRC_DIR)/%.cpp
|
||||
$(DEBUG_OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) $(UWS_INCLUDE) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) $(UWS_INCLUDE) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(DEBUG_OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
-fno-rtti \
|
||||
-ferror-limit=1000 \
|
||||
-DBUN_DEBUG \
|
||||
$(EMIT_LLVM_FOR_DEBUG) \
|
||||
-g3 -c -o $@ $<
|
||||
|
||||
# $(DEBUG_OBJ_DIR) is not included here because it breaks
|
||||
# detecting if a file needs to be rebuilt
|
||||
.PHONY: $(SRC_DIR)/webcore/%.cpp
|
||||
$(DEBUG_OBJ_DIR)/%.o: $(SRC_DIR)/webcore/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(DEBUG_OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
-fno-rtti \
|
||||
-ferror-limit=1000 \
|
||||
$(EMIT_LLVM_FOR_DEBUG) \
|
||||
-DBUN_DEBUG \
|
||||
-g3 -c -o $@ $<
|
||||
|
||||
.PHONY: src/io/%.cpp
|
||||
$(DEBUG_OBJ_DIR)/%.o: src/io/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(DEBUG_OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
-fno-rtti \
|
||||
-ferror-limit=1000 \
|
||||
-DBUN_DEBUG \
|
||||
$(EMIT_LLVM_FOR_DEBUG) \
|
||||
-g3 -c -o $@ $<
|
||||
|
||||
|
||||
# $(DEBUG_OBJ_DIR) is not included here because it breaks
|
||||
# detecting if a file needs to be rebuilt
|
||||
.PHONY: $(SRC_DIR)/sqlite/%.cpp
|
||||
$(DEBUG_OBJ_DIR)/%.o: $(SRC_DIR)/sqlite/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(DEBUG_OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
-fno-rtti \
|
||||
-ferror-limit=1000 \
|
||||
$(EMIT_LLVM_FOR_DEBUG) \
|
||||
-DBUN_DEBUG \
|
||||
-g3 -c -o $@ $<
|
||||
|
||||
# $(DEBUG_OBJ_DIR) is not included here because it breaks
|
||||
# detecting if a file needs to be rebuilt
|
||||
.PHONY: $(SRC_DIR)/node_os/%.cpp
|
||||
$(DEBUG_OBJ_DIR)/%.o: $(SRC_DIR)/node_os/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(DEBUG_OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
-fno-rtti \
|
||||
-ferror-limit=1000 \
|
||||
$(EMIT_LLVM_FOR_DEBUG) \
|
||||
-DBUN_DEBUG \
|
||||
-g3 -c -o $@ $<
|
||||
|
||||
# $(DEBUG_OBJ_DIR) is not included here because it breaks
|
||||
# detecting if a file needs to be rebuilt
|
||||
.PHONY: src/bun.js/builtins/%.cpp
|
||||
$(DEBUG_OBJ_DIR)/%.o: src/bun.js/builtins/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(DEBUG_OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
-fno-rtti \
|
||||
-ferror-limit=1000 \
|
||||
$(EMIT_LLVM_FOR_DEBUG) \
|
||||
-DBUN_DEBUG \
|
||||
-g3 -c -o $@ $<
|
||||
|
||||
.PHONY: src/bun.js/modules/%.cpp
|
||||
$(DEBUG_OBJ_DIR)/%.o: src/bun.js/modules/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(DEBUG_OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
-fno-rtti \
|
||||
-ferror-limit=1000 \
|
||||
$(EMIT_LLVM_FOR_DEBUG) \
|
||||
-DBUN_DEBUG \
|
||||
-g3 -c -o $@ $<
|
||||
|
||||
|
||||
|
||||
$(DEBUG_OBJ_DIR)/webcrypto/%.o: src/bun.js/bindings/webcrypto/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(DEBUG_OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
@@ -1642,9 +1717,12 @@ $(DEBUG_OBJ_DIR)/webcrypto/%.o: src/bun.js/bindings/webcrypto/%.cpp
|
||||
-fno-rtti \
|
||||
-ferror-limit=1000 \
|
||||
$(EMIT_LLVM_FOR_DEBUG) \
|
||||
-DBUN_DEBUG \
|
||||
-g3 -c -o $@ $<
|
||||
|
||||
|
||||
|
||||
|
||||
.PHONY: webcrypto-debug-obj
|
||||
# Make all the .cpp files in the webcrypto directory into .o files using Makefile substitutions
|
||||
webcrypto-debug-obj: $(patsubst src/bun.js/bindings/webcrypto/%.cpp, $(DEBUG_OBJ_DIR)/webcrypto/%.o, $(wildcard src/bun.js/bindings/webcrypto/*.cpp))
|
||||
@@ -1658,7 +1736,7 @@ webcrypto-debug:
|
||||
|
||||
|
||||
$(OBJ_DIR)/webcrypto/%.o: src/bun.js/bindings/webcrypto/%.cpp
|
||||
$(CXX) $(CLANG_FLAGS) \
|
||||
$(CXX_WITH_CCACHE) $(CLANG_FLAGS) \
|
||||
$(MACOS_MIN_FLAG) \
|
||||
$(OPTIMIZATION_LEVEL) \
|
||||
-fno-exceptions \
|
||||
@@ -1681,7 +1759,7 @@ webcrypto:
|
||||
|
||||
sizegen:
|
||||
mkdir -p $(BUN_TMP_DIR)
|
||||
$(CXX) src/bun.js/headergen/sizegen.cpp -Wl,-dead_strip -Wl,-dead_strip_dylibs -fuse-ld=lld -o $(BUN_TMP_DIR)/sizegen $(CLANG_FLAGS) -O1
|
||||
$(CXX) src/bun.js/headergen/sizegen.cpp -Wl,-dead_strip -Wl,-dead_strip_dylibs -fuse-ld=lld -o $(BUN_TMP_DIR)/sizegen $(CLANG_FLAGS) -O1
|
||||
$(BUN_TMP_DIR)/sizegen > src/bun.js/bindings/sizes.zig
|
||||
|
||||
|
||||
@@ -1842,7 +1920,14 @@ copy-to-bun-release-dir-bin:
|
||||
cp -r $(PACKAGE_DIR)/bun $(BUN_RELEASE_DIR)/bun
|
||||
cp -r $(PACKAGE_DIR)/bun-profile $(BUN_RELEASE_DIR)/bun-profile
|
||||
|
||||
PACKAGE_MAP = --pkg-begin thread_pool $(BUN_DIR)/src/thread_pool.zig --pkg-begin io $(BUN_DIR)/src/io/io_$(OS_NAME).zig --pkg-end --pkg-begin http $(BUN_DIR)/src/http_client_async.zig --pkg-begin strings $(BUN_DIR)/src/string_immutable.zig --pkg-end --pkg-begin picohttp $(BUN_DIR)/src/deps/picohttp.zig --pkg-end --pkg-begin io $(BUN_DIR)/src/io/io_darwin.zig --pkg-end --pkg-begin boringssl $(BUN_DIR)/src/boringssl.zig --pkg-end --pkg-begin thread_pool $(BUN_DIR)/src/thread_pool.zig --pkg-begin io $(BUN_DIR)/src/io/io_darwin.zig --pkg-end --pkg-begin http $(BUN_DIR)/src/http_client_async.zig --pkg-begin strings $(BUN_DIR)/src/string_immutable.zig --pkg-end --pkg-begin picohttp $(BUN_DIR)/src/deps/picohttp.zig --pkg-end --pkg-begin io $(BUN_DIR)/src/io/io_darwin.zig --pkg-end --pkg-begin boringssl $(BUN_DIR)/src/boringssl.zig --pkg-end --pkg-begin thread_pool $(BUN_DIR)/src/thread_pool.zig --pkg-end --pkg-end --pkg-end --pkg-end --pkg-end --pkg-begin picohttp $(BUN_DIR)/src/deps/picohttp.zig --pkg-end --pkg-begin io $(BUN_DIR)/src/io/io_darwin.zig --pkg-end --pkg-begin strings $(BUN_DIR)/src/string_immutable.zig --pkg-end --pkg-begin clap $(BUN_DIR)/src/deps/zig-clap/clap.zig --pkg-end --pkg-begin http $(BUN_DIR)/src/http_client_async.zig --pkg-begin strings $(BUN_DIR)/src/string_immutable.zig --pkg-end --pkg-begin picohttp $(BUN_DIR)/src/deps/picohttp.zig --pkg-end --pkg-begin io $(BUN_DIR)/src/io/io_darwin.zig --pkg-end --pkg-begin boringssl $(BUN_DIR)/src/boringssl.zig --pkg-end --pkg-begin thread_pool $(BUN_DIR)/src/thread_pool.zig --pkg-begin io $(BUN_DIR)/src/io/io_darwin.zig --pkg-end --pkg-begin http $(BUN_DIR)/src/http_client_async.zig --pkg-begin strings $(BUN_DIR)/src/string_immutable.zig --pkg-end --pkg-begin picohttp $(BUN_DIR)/src/deps/picohttp.zig --pkg-end --pkg-begin io $(BUN_DIR)/src/io/io_darwin.zig --pkg-end --pkg-begin boringssl $(BUN_DIR)/src/boringssl.zig --pkg-end --pkg-begin thread_pool $(BUN_DIR)/src/thread_pool.zig --pkg-end --pkg-end --pkg-end --pkg-end --pkg-begin boringssl $(BUN_DIR)/src/boringssl.zig --pkg-end --pkg-begin javascript_core $(BUN_DIR)/src/jsc.zig --pkg-begin http $(BUN_DIR)/src/http_client_async.zig --pkg-end --pkg-begin strings $(BUN_DIR)/src/string_immutable.zig --pkg-end --pkg-begin picohttp $(BUN_DIR)/src/deps/picohttp.zig --pkg-end --pkg-end
|
||||
PACKAGE_MAP = --pkg-begin async_io $(BUN_DIR)/src/io/io_darwin.zig --pkg-begin bun $(BUN_DIR)/src/bun_redirect.zig --pkg-end --pkg-end --pkg-begin javascript_core $(BUN_DIR)/src/jsc.zig --pkg-begin bun $(BUN_DIR)/src/bun_redirect.zig --pkg-end --pkg-end --pkg-begin bun $(BUN_DIR)/src/bun_redirect.zig --pkg-end
|
||||
|
||||
|
||||
.PHONY: vendor-without-check
|
||||
vendor-without-check: npm-install node-fallbacks runtime_js fallback_decoder bun_error mimalloc picohttp zlib boringssl libarchive lolhtml sqlite usockets uws tinycc c-ares
|
||||
|
||||
.PHONY: vendor
|
||||
vendor: require init-submodules vendor-without-check
|
||||
|
||||
.PHONY: bun
|
||||
bun: vendor identifier-cache build-obj bun-link-lld-release bun-codesign-release-local
|
||||
|
||||
BIN
bench/bun.lockb
BIN
bench/bun.lockb
Binary file not shown.
169
bench/expect-to-equal/.gitignore
vendored
Normal file
169
bench/expect-to-equal/.gitignore
vendored
Normal file
@@ -0,0 +1,169 @@
|
||||
# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
|
||||
|
||||
# Logs
|
||||
|
||||
logs
|
||||
_.log
|
||||
npm-debug.log_
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
|
||||
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
|
||||
|
||||
# Runtime data
|
||||
|
||||
pids
|
||||
_.pid
|
||||
_.seed
|
||||
\*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
|
||||
coverage
|
||||
\*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
|
||||
\*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
|
||||
.eslintcache
|
||||
|
||||
# Optional stylelint cache
|
||||
|
||||
.stylelintcache
|
||||
|
||||
# Microbundle cache
|
||||
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
|
||||
\*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variable files
|
||||
|
||||
.env
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
|
||||
.cache/
|
||||
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
|
||||
.vuepress/dist
|
||||
|
||||
# vuepress v2.x temp and cache directory
|
||||
|
||||
.temp
|
||||
.cache
|
||||
|
||||
# Docusaurus cache and generated files
|
||||
|
||||
.docusaurus
|
||||
|
||||
# Serverless directories
|
||||
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.\*
|
||||
43
bench/expect-to-equal/README.md
Normal file
43
bench/expect-to-equal/README.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# expect-to-equal
|
||||
|
||||
To install dependencies:
|
||||
|
||||
```bash
|
||||
bun install
|
||||
```
|
||||
|
||||
To run in Bun:
|
||||
|
||||
```bash
|
||||
# so it doesn't run the vitest one
|
||||
bun wiptest expect-to-equal.test.js
|
||||
```
|
||||
|
||||
To run in Jest:
|
||||
|
||||
```bash
|
||||
# If you remove the import the performance doesn't change much
|
||||
NODE_OPTIONS="--experimental-vm-modules" ./node_modules/.bin/jest expect-to-equal.test.js
|
||||
```
|
||||
|
||||
To run in Vitest:
|
||||
|
||||
```bash
|
||||
./node_modules/.bin/vitest --run expect-to-equal.vitest.test.js
|
||||
```
|
||||
|
||||
Output on my machine (M1):
|
||||
|
||||
bun:test (bun v0.3.0):
|
||||
|
||||
> [36.40ms] expect().toEqual() x 10000
|
||||
|
||||
jest (node v18.11.0)
|
||||
|
||||
> expect().toEqual() x 10000: 5053 ms
|
||||
|
||||
vitest (node v18.11.0)
|
||||
|
||||
> expect().toEqual() x 10000: 401.08ms
|
||||
|
||||
This project was created using `bun init` in bun v0.3.0. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
|
||||
BIN
bench/expect-to-equal/bun.lockb
Executable file
BIN
bench/expect-to-equal/bun.lockb
Executable file
Binary file not shown.
42
bench/expect-to-equal/expect-to-equal.test.js
Normal file
42
bench/expect-to-equal/expect-to-equal.test.js
Normal file
@@ -0,0 +1,42 @@
|
||||
// bun:test automatically rewrites this import to bun:test when run in bun
|
||||
import { test, expect } from "@jest/globals";
|
||||
|
||||
const N = parseInt(process.env.RUN_COUNT || "10000", 10);
|
||||
if (!Number.isSafeInteger(N)) {
|
||||
throw new Error("Invalid RUN_COUNT");
|
||||
}
|
||||
|
||||
const label = "expect().toEqual() x " + N;
|
||||
|
||||
test(label, () => {
|
||||
console.time(label);
|
||||
for (let runsLeft = N; runsLeft > 0; runsLeft--) {
|
||||
expect("hello").toEqual("hello");
|
||||
expect(123).toEqual(123);
|
||||
|
||||
expect({ a: 1, b: 2 }).toEqual({ b: 2, a: 1 });
|
||||
expect([1, 2, 3]).toEqual([1, 2, 3]);
|
||||
expect({ a: 1, b: 2 }).not.toEqual({ b: 2, a: 1, c: 3 });
|
||||
expect([1, 2, 3]).not.toEqual([1, 2, 3, 4]);
|
||||
expect({ a: 1, b: 2, c: 3 }).not.toEqual({ a: 1, b: 2 });
|
||||
expect([1, 2, 3, 4]).not.toEqual([1, 2, 3]);
|
||||
|
||||
let a = [{ a: 1 }, { b: 2, c: 3, d: 4 }, { e: 5, f: 6 }];
|
||||
let b = [{ a: 1 }, { b: 2, c: 3, d: 4 }, { e: 5, f: 6 }];
|
||||
expect(a).toEqual(b);
|
||||
expect(b).toEqual(a);
|
||||
a[0].a = 2;
|
||||
expect(a).not.toEqual(b);
|
||||
expect(b).not.toEqual(a);
|
||||
|
||||
let c = { [Symbol("test")]: 1 };
|
||||
let d = { [Symbol("test")]: 1 };
|
||||
expect(c).not.toEqual(d);
|
||||
expect(d).not.toEqual(c);
|
||||
|
||||
a = { a: 1, b: 2, c: 3 };
|
||||
b = { a: 1, b: 2 };
|
||||
expect(a).not.toEqual(b);
|
||||
}
|
||||
console.timeEnd(label);
|
||||
});
|
||||
41
bench/expect-to-equal/expect-to-equal.vitest.test.js
Normal file
41
bench/expect-to-equal/expect-to-equal.vitest.test.js
Normal file
@@ -0,0 +1,41 @@
|
||||
import { test, expect } from "vitest";
|
||||
|
||||
const N = parseInt(process.env.RUN_COUNT || "10000", 10);
|
||||
if (!Number.isSafeInteger(N)) {
|
||||
throw new Error("Invalid RUN_COUNT");
|
||||
}
|
||||
|
||||
const label = "expect().toEqual() x " + N;
|
||||
|
||||
test(label, () => {
|
||||
console.time(label);
|
||||
for (let runsLeft = N; runsLeft > 0; runsLeft--) {
|
||||
expect("hello").toEqual("hello");
|
||||
expect(123).toEqual(123);
|
||||
|
||||
expect({ a: 1, b: 2 }).toEqual({ b: 2, a: 1 });
|
||||
expect([1, 2, 3]).toEqual([1, 2, 3]);
|
||||
expect({ a: 1, b: 2 }).not.toEqual({ b: 2, a: 1, c: 3 });
|
||||
expect([1, 2, 3]).not.toEqual([1, 2, 3, 4]);
|
||||
expect({ a: 1, b: 2, c: 3 }).not.toEqual({ a: 1, b: 2 });
|
||||
expect([1, 2, 3, 4]).not.toEqual([1, 2, 3]);
|
||||
|
||||
let a = [{ a: 1 }, { b: 2, c: 3, d: 4 }, { e: 5, f: 6 }];
|
||||
let b = [{ a: 1 }, { b: 2, c: 3, d: 4 }, { e: 5, f: 6 }];
|
||||
expect(a).toEqual(b);
|
||||
expect(b).toEqual(a);
|
||||
a[0].a = 2;
|
||||
expect(a).not.toEqual(b);
|
||||
expect(b).not.toEqual(a);
|
||||
|
||||
let c = { [Symbol("test")]: 1 };
|
||||
let d = { [Symbol("test")]: 1 };
|
||||
expect(c).not.toEqual(d);
|
||||
expect(d).not.toEqual(c);
|
||||
|
||||
a = { a: 1, b: 2, c: 3 };
|
||||
b = { a: 1, b: 2 };
|
||||
expect(a).not.toEqual(b);
|
||||
}
|
||||
console.timeEnd(label);
|
||||
});
|
||||
1
bench/expect-to-equal/index.ts
Normal file
1
bench/expect-to-equal/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
console.log("Hello via Bun!");
|
||||
9
bench/expect-to-equal/package.json
Normal file
9
bench/expect-to-equal/package.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "expect-to-equal",
|
||||
"module": "index.ts",
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"jest": "^29.3.1",
|
||||
"vitest": "^0.25.3"
|
||||
}
|
||||
}
|
||||
20
bench/expect-to-equal/tsconfig.json
Normal file
20
bench/expect-to-equal/tsconfig.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"lib": [
|
||||
"ESNext"
|
||||
],
|
||||
"module": "esnext",
|
||||
"target": "esnext",
|
||||
"moduleResolution": "nodenext",
|
||||
"strict": true,
|
||||
"downlevelIteration": true,
|
||||
"skipLibCheck": true,
|
||||
"jsx": "preserve",
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"allowJs": true,
|
||||
"types": [
|
||||
"bun-types" // add Bun global
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ bench(`fetch(https://example.com) x ${count}`, async () => {
|
||||
|
||||
for (let i = 0; i < requests.length; i++) {
|
||||
requests[i] = fetch(`https://www.example.com/?cachebust=${i}`).then((r) =>
|
||||
r.text()
|
||||
r.text(),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ bench(`fetch(https://example.com) x ${count}`, async () => {
|
||||
|
||||
for (let i = 0; i < requests.length; i++) {
|
||||
requests[i] = fetch(`https://www.example.com/?cachebust=${i}`).then((r) =>
|
||||
r.text()
|
||||
r.text(),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { run, bench, group } from "../node_modules/mitata/src/cli.mjs";
|
||||
const extension = "darwin" !== Deno.build.os ? "so" : "dylib";
|
||||
const path = new URL(
|
||||
"src/target/release/libffi_napi_bench." + extension,
|
||||
import.meta.url
|
||||
import.meta.url,
|
||||
).pathname;
|
||||
|
||||
const {
|
||||
|
||||
@@ -43,7 +43,7 @@ if (process.env.PROJECT === "bun") {
|
||||
},
|
||||
|
||||
shell: false,
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@@ -114,5 +114,5 @@ async function main() {
|
||||
main().catch((error) =>
|
||||
setTimeout(() => {
|
||||
throw error;
|
||||
})
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -70,9 +70,9 @@ fs.writeFileSync(
|
||||
`${process.platform}-${
|
||||
process.arch === "arm64" ? "aarch64" : process.arch
|
||||
}` +
|
||||
".json"
|
||||
".json",
|
||||
),
|
||||
JSON.stringify(report, null, 2)
|
||||
JSON.stringify(report, null, 2),
|
||||
);
|
||||
|
||||
console.log(
|
||||
@@ -101,7 +101,7 @@ console.log(
|
||||
TOTAL_FRAMES,
|
||||
"(" +
|
||||
Math.round(
|
||||
Math.max(Math.min(1.0, timings.length / TOTAL_FRAMES), 0) * 100
|
||||
Math.max(Math.min(1.0, timings.length / TOTAL_FRAMES), 0) * 100,
|
||||
) +
|
||||
"%)"
|
||||
"%)",
|
||||
);
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { bench, run } from "mitata";
|
||||
|
||||
bench("JSON.stringify({hello: 'world'})", () =>
|
||||
JSON.stringify({ hello: "world" })
|
||||
JSON.stringify({ hello: "world" }),
|
||||
);
|
||||
|
||||
const otherUint8Array = new Uint8Array(1024);
|
||||
bench("Uint8Array.from(otherUint8Array)", () =>
|
||||
Uint8Array.from(otherUint8Array)
|
||||
Uint8Array.from(otherUint8Array),
|
||||
);
|
||||
|
||||
run();
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { bench, run } from "mitata";
|
||||
|
||||
bench("console.log('hello')", () => console.log("hello"));
|
||||
bench("console.log({ hello: 'object' })", () => console.log({ hello: "object" }));
|
||||
bench("console.log({ hello: 'object' })", () =>
|
||||
console.log({ hello: "object" }),
|
||||
);
|
||||
await run();
|
||||
|
||||
@@ -23,7 +23,7 @@ export const hello${i} = "hello${i}";
|
||||
${saveStack ? `globalThis.evaluationOrder.push("${file}");` : ""}
|
||||
globalThis.counter++;
|
||||
`,
|
||||
"utf8"
|
||||
"utf8",
|
||||
);
|
||||
var file2 = output + "/file" + i + ".js";
|
||||
|
||||
@@ -39,7 +39,7 @@ module.exports.hello${i} = "hello${i}";
|
||||
${saveStack ? `globalThis.evaluationOrder.push("${file2}");` : ""}
|
||||
globalThis.counter++;
|
||||
`,
|
||||
"utf8"
|
||||
"utf8",
|
||||
);
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ fs.writeFileSync(
|
||||
: ""
|
||||
}
|
||||
`,
|
||||
"utf8"
|
||||
"utf8",
|
||||
);
|
||||
|
||||
fs.writeFileSync(
|
||||
@@ -66,7 +66,7 @@ fs.writeFileSync(
|
||||
: ""
|
||||
}
|
||||
`,
|
||||
"utf8"
|
||||
"utf8",
|
||||
);
|
||||
|
||||
fs.writeFileSync(
|
||||
@@ -79,7 +79,7 @@ fs.writeFileSync(
|
||||
console.timeEnd("import");
|
||||
${saveStack ? `console.log(globalThis.evaluationOrder.join("\\n"));` : ""}
|
||||
console.log("Loaded", globalThis.counter, "files", "totaling", new Intl.NumberFormat().format(globalThis.exportCounter), 'exports');`,
|
||||
"utf8"
|
||||
"utf8",
|
||||
);
|
||||
|
||||
fs.writeFileSync(
|
||||
@@ -92,7 +92,7 @@ export const THE_END = Foo.THE_END;
|
||||
console.timeEnd("import.meta.require");
|
||||
${saveStack ? `console.log(globalThis.evaluationOrder.join("\\n"));` : ""}
|
||||
console.log("Loaded", globalThis.counter, "files", "totaling", new Intl.NumberFormat().format(globalThis.exportCounter), 'exports');`,
|
||||
"utf8"
|
||||
"utf8",
|
||||
);
|
||||
|
||||
fs.writeFileSync(
|
||||
@@ -106,7 +106,7 @@ fs.writeFileSync(
|
||||
console.timeEnd("import.meta.require");
|
||||
${saveStack ? `console.log(globalThis.evaluationOrder.join("\\n"));` : ""}
|
||||
console.log("Loaded", globalThis.counter, "files", "totaling", new Intl.NumberFormat().format(globalThis.exportCounter), 'exports');`,
|
||||
"utf8"
|
||||
"utf8",
|
||||
);
|
||||
|
||||
fs.writeFileSync(
|
||||
@@ -120,7 +120,7 @@ fs.writeFileSync(
|
||||
${saveStack ? `console.log(globalThis.evaluationOrder.join("\\n"));` : ""}
|
||||
console.log("Loaded", globalThis.counter, "files", "totaling", new Intl.NumberFormat().format(globalThis.exportCounter), 'exports');
|
||||
`,
|
||||
"utf8"
|
||||
"utf8",
|
||||
);
|
||||
|
||||
console.log(`
|
||||
|
||||
@@ -14,5 +14,8 @@
|
||||
"async": "cd async && bun run deps && bun run build && bun run bench",
|
||||
"sqlite": "cd sqlite && bun run deps && bun run build && bun run bench",
|
||||
"modules:node_os": "cd modules/node_os && bun run deps &&bun run build && bun run bench"
|
||||
},
|
||||
"devDependencies": {
|
||||
"fast-deep-equal": "^3.1.3"
|
||||
}
|
||||
}
|
||||
|
||||
30
bench/snippets/arraybuffersink.mjs
Normal file
30
bench/snippets/arraybuffersink.mjs
Normal file
@@ -0,0 +1,30 @@
|
||||
import { ArrayBufferSink } from "bun";
|
||||
import { bench, run } from "mitata";
|
||||
|
||||
var short = "Hello World!";
|
||||
var shortUTF16 = "Hello World 💕💕💕";
|
||||
var long = "Hello World!".repeat(1024);
|
||||
var longUTF16 = "Hello World 💕💕💕".repeat(1024);
|
||||
var encoder = new ArrayBufferSink({ stream: true, highWaterMark: 512 });
|
||||
|
||||
bench(`${short.length} ascii`, () => {
|
||||
encoder.write(short);
|
||||
encoder.start();
|
||||
});
|
||||
|
||||
bench(`${short.length} utf8`, () => {
|
||||
encoder.write(shortUTF16);
|
||||
encoder.start();
|
||||
});
|
||||
|
||||
bench(`${long.length} ascii`, () => {
|
||||
encoder.write(long);
|
||||
encoder.start();
|
||||
});
|
||||
|
||||
bench(`${longUTF16.length} utf8`, () => {
|
||||
encoder.write(longUTF16);
|
||||
encoder.start();
|
||||
});
|
||||
|
||||
await run();
|
||||
15
bench/snippets/assert.mjs
Normal file
15
bench/snippets/assert.mjs
Normal file
@@ -0,0 +1,15 @@
|
||||
import { bench, group, run } from "mitata";
|
||||
import * as assert from "assert";
|
||||
|
||||
bench("deepEqual", () => {
|
||||
assert.deepEqual({ foo: "123", bar: "baz" }, { foo: "123", bar: "baz" });
|
||||
});
|
||||
|
||||
bench("deepStrictEqual", () => {
|
||||
assert.deepStrictEqual(
|
||||
{ foo: "123", beep: "boop" },
|
||||
{ foo: "123", beep: "boop" },
|
||||
);
|
||||
});
|
||||
|
||||
await run();
|
||||
@@ -5,6 +5,19 @@ bench("async function(){}", async function () {});
|
||||
bench("await 1", async function () {
|
||||
return await 1;
|
||||
});
|
||||
|
||||
function callnextTick(resolve) {
|
||||
process.nextTick(resolve);
|
||||
}
|
||||
|
||||
function awaitNextTick() {
|
||||
return new Promise(callnextTick);
|
||||
}
|
||||
|
||||
bench("promise.nextTick", async function () {
|
||||
return awaitNextTick();
|
||||
});
|
||||
|
||||
bench("await new Promise(resolve => resolve())", async function () {
|
||||
await new Promise((resolve) => resolve());
|
||||
});
|
||||
@@ -12,7 +25,7 @@ bench(
|
||||
"Promise.all(Array.from({length: 100}, () => new Promise((resolve) => resolve())))",
|
||||
async function () {
|
||||
return Promise.all(Array.from({ length: 100 }, () => Promise.resolve(1)));
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
await run();
|
||||
|
||||
29
bench/snippets/buffer-create.mjs
Normal file
29
bench/snippets/buffer-create.mjs
Normal file
@@ -0,0 +1,29 @@
|
||||
import { bench, run } from "mitata";
|
||||
|
||||
const N = parseInt(process.argv.slice(2).at(0) || "10", 10);
|
||||
|
||||
bench("new Buffer(0)", () => {
|
||||
return new Buffer(0);
|
||||
});
|
||||
|
||||
bench(`new Buffer(${N})`, () => {
|
||||
return new Buffer(N);
|
||||
});
|
||||
|
||||
bench(`Buffer.alloc(${N})`, () => {
|
||||
return Buffer.alloc(N);
|
||||
});
|
||||
|
||||
bench(`Buffer.allocUnsafe(${N})`, () => {
|
||||
return Buffer.allocUnsafe(N);
|
||||
});
|
||||
|
||||
bench("Buffer.allocUnsafe(24_000)", () => {
|
||||
return Buffer.allocUnsafe(24_000);
|
||||
});
|
||||
|
||||
bench("Buffer.alloc(24_000)", () => {
|
||||
return Buffer.alloc(24_000);
|
||||
});
|
||||
|
||||
await run();
|
||||
53
bench/snippets/console-log.mjs
Normal file
53
bench/snippets/console-log.mjs
Normal file
@@ -0,0 +1,53 @@
|
||||
import { bench, run } from "../node_modules/mitata/src/cli.mjs";
|
||||
|
||||
const json = {
|
||||
login: "wongmjane",
|
||||
id: 1332975,
|
||||
node_id: "MDQ6VXNlcjEzMzI5NzU=",
|
||||
avatar_url: "https://avatars.githubusercontent.com/u/1332975?v=4",
|
||||
gravatar_id: "",
|
||||
url: "https://api.github.com/users/wongmjane",
|
||||
html_url: "https://github.com/wongmjane",
|
||||
followers_url: "https://api.github.com/users/wongmjane/followers",
|
||||
following_url:
|
||||
"https://api.github.com/users/wongmjane/following{/other_user}",
|
||||
gists_url: "https://api.github.com/users/wongmjane/gists{/gist_id}",
|
||||
starred_url: "https://api.github.com/users/wongmjane/starred{/owner}{/repo}",
|
||||
subscriptions_url: "https://api.github.com/users/wongmjane/subscriptions",
|
||||
organizations_url: "https://api.github.com/users/wongmjane/orgs",
|
||||
repos_url: "https://api.github.com/users/wongmjane/repos",
|
||||
events_url: "https://api.github.com/users/wongmjane/events{/privacy}",
|
||||
received_events_url: "https://api.github.com/users/wongmjane/received_events",
|
||||
type: "User",
|
||||
site_admin: false,
|
||||
name: null,
|
||||
company: null,
|
||||
blog: "https://wongmjane.com",
|
||||
location: null,
|
||||
email: null,
|
||||
hireable: null,
|
||||
bio: null,
|
||||
twitter_username: "wongmjane",
|
||||
public_repos: 0,
|
||||
public_gists: 8,
|
||||
followers: 1197,
|
||||
following: 135,
|
||||
created_at: "2012-01-16T07:01:22Z",
|
||||
updated_at: "2022-11-23T16:12:24Z",
|
||||
};
|
||||
|
||||
const inspect =
|
||||
"Bun" in globalThis
|
||||
? Bun.inspect
|
||||
: "Deno" in globalThis
|
||||
? Deno.inspect
|
||||
: (await import("util")).inspect;
|
||||
bench("big json object", () => {
|
||||
console.error(json);
|
||||
});
|
||||
|
||||
bench("inspect big json object", () => {
|
||||
console.error(inspect(json));
|
||||
});
|
||||
|
||||
await run();
|
||||
30
bench/snippets/crypto-hasher.mjs
Normal file
30
bench/snippets/crypto-hasher.mjs
Normal file
@@ -0,0 +1,30 @@
|
||||
// so it can run in environments without node module resolution
|
||||
import { bench, run } from "mitata";
|
||||
|
||||
import crypto from "node:crypto";
|
||||
|
||||
var foo = Buffer.allocUnsafe(16384);
|
||||
foo.fill(123);
|
||||
|
||||
// if ("Bun" in globalThis) {
|
||||
// const { CryptoHasher } = Bun;
|
||||
// bench("CryptoHasher Blake2b256", () => {
|
||||
// var hasher = new CryptoHasher("blake2b256");
|
||||
// hasher.update(foo);
|
||||
// hasher.digest();
|
||||
// });
|
||||
// }
|
||||
|
||||
bench('crypto.createHash("sha512")', () => {
|
||||
var hasher = crypto.createHash("sha512");
|
||||
hasher.update(foo);
|
||||
hasher.digest();
|
||||
});
|
||||
|
||||
bench('crypto.createHash("sha512")', () => {
|
||||
var hasher = crypto.createHash("sha512");
|
||||
hasher.update(foo);
|
||||
hasher.digest();
|
||||
});
|
||||
|
||||
await run();
|
||||
509
bench/snippets/deep-equals.js
Normal file
509
bench/snippets/deep-equals.js
Normal file
@@ -0,0 +1,509 @@
|
||||
import { bench, group, run } from "mitata";
|
||||
import fastDeepEquals from "fast-deep-equal/es6/index";
|
||||
// const Date = globalThis.Date;
|
||||
|
||||
function func1() {}
|
||||
function func2() {}
|
||||
|
||||
const s = Symbol("foo");
|
||||
const a1 = [1, 2, 3, 4];
|
||||
a1[s] = "f00";
|
||||
const a2 = [1, 2, 3, 4];
|
||||
a2[s] = "f00";
|
||||
|
||||
const e1 = new Set();
|
||||
e1.add([1, 2, 3]);
|
||||
e1.add("test1");
|
||||
e1.add(498);
|
||||
e1.add({ a: 1, b: 2 });
|
||||
e1.add({ a: 1, b: 434221 });
|
||||
e1.add({ a: 1, b: 25 });
|
||||
e1.add({ a: 1, b: 4 });
|
||||
e1.add({ a: 1, b: 2667 });
|
||||
e1.add({ a: 1, b: 2 });
|
||||
e1.add({ a: 1, b: 23426 });
|
||||
e1.add({ a: 1, b: 672 });
|
||||
e1.add({ a: 1, b: 28465 });
|
||||
|
||||
const e2 = new Set();
|
||||
e2.add([1, 2, 3]);
|
||||
e2.add("test1");
|
||||
e2.add(498);
|
||||
e1.add({ a: 1, b: 2 });
|
||||
e1.add({ a: 1, b: 434221 });
|
||||
e1.add({ a: 1, b: 25 });
|
||||
e1.add({ a: 1, b: 4 });
|
||||
e1.add({ a: 1, b: 2667 });
|
||||
e1.add({ a: 1, b: 2 });
|
||||
e1.add({ a: 1, b: 23426 });
|
||||
e1.add({ a: 1, b: 672 });
|
||||
e1.add({ a: 1, b: 28465 });
|
||||
|
||||
const d1 = new Set();
|
||||
d1.add({ a: 1, b: 2 });
|
||||
const d2 = new Set();
|
||||
d2.add({ a: 1, b: 2 });
|
||||
|
||||
const fixture = [
|
||||
{
|
||||
description: "scalars",
|
||||
tests: [
|
||||
{
|
||||
description: "equal numbers",
|
||||
value1: 1,
|
||||
value2: 1,
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "not equal numbers",
|
||||
value1: 1,
|
||||
value2: 2,
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "number and array are not equal",
|
||||
value1: 1,
|
||||
value2: [],
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "0 and null are not equal",
|
||||
value1: 0,
|
||||
value2: null,
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "equal strings",
|
||||
value1: "azzzz",
|
||||
value2: "azzzz",
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "not equal strings",
|
||||
value1: "azzzz",
|
||||
value2: "bzzzz",
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "empty string and null are not equal",
|
||||
value1: "",
|
||||
value2: null,
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "null is equal to null",
|
||||
value1: null,
|
||||
value2: null,
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "equal booleans (true)",
|
||||
value1: true,
|
||||
value2: true,
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "equal booleans (false)",
|
||||
value1: false,
|
||||
value2: false,
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "not equal booleans",
|
||||
value1: true,
|
||||
value2: false,
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "1 and true are not equal",
|
||||
value1: 1,
|
||||
value2: true,
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "0 and false are not equal",
|
||||
value1: 0,
|
||||
value2: false,
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "NaN and NaN are equal",
|
||||
value1: NaN,
|
||||
value2: NaN,
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "0 and -0 are equal",
|
||||
value1: 0,
|
||||
value2: -0,
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "Infinity and Infinity are equal",
|
||||
value1: Infinity,
|
||||
value2: Infinity,
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "Infinity and -Infinity are not equal",
|
||||
value1: Infinity,
|
||||
value2: -Infinity,
|
||||
equal: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
description: "objects",
|
||||
tests: [
|
||||
{
|
||||
description: "empty objects are equal",
|
||||
value1: {},
|
||||
value2: {},
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: 'equal objects (same properties "order")',
|
||||
value1: { a: 1, b: "2" },
|
||||
value2: { a: 1, b: "2" },
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: 'equal objects (different properties "order")',
|
||||
value1: { a: 1, b: "2" },
|
||||
value2: { b: "2", a: 1 },
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "not equal objects (extra property)",
|
||||
value1: { a: 1, b: "2" },
|
||||
value2: { a: 1, b: "2", c: [] },
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "not equal objects (different property values)",
|
||||
value1: { a: 1, b: "2", c: 3 },
|
||||
value2: { a: 1, b: "2", c: 4 },
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "not equal objects (different properties)",
|
||||
value1: { a: 1, b: "2", c: 3 },
|
||||
value2: { a: 1, b: "2", d: 3 },
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "equal objects (same sub-properties)",
|
||||
value1: { a: [{ b: "c" }] },
|
||||
value2: { a: [{ b: "c" }] },
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "not equal objects (different sub-property value)",
|
||||
value1: { a: [{ b: "c" }] },
|
||||
value2: { a: [{ b: "d" }] },
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "not equal objects (different sub-property)",
|
||||
value1: { a: [{ b: "c" }] },
|
||||
value2: { a: [{ c: "c" }] },
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "empty array and empty object are not equal",
|
||||
value1: {},
|
||||
value2: [],
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "object with extra undefined properties are not equal #1",
|
||||
value1: {},
|
||||
value2: { foo: undefined },
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "object with extra undefined properties are not equal #2",
|
||||
value1: { foo: undefined },
|
||||
value2: {},
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "object with extra undefined properties are not equal #3",
|
||||
value1: { foo: undefined },
|
||||
value2: { bar: undefined },
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "nulls are equal",
|
||||
value1: null,
|
||||
value2: null,
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "null and undefined are not equal",
|
||||
value1: null,
|
||||
value2: undefined,
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "null and empty object are not equal",
|
||||
value1: null,
|
||||
value2: {},
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "undefined and empty object are not equal",
|
||||
value1: undefined,
|
||||
value2: {},
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description:
|
||||
"objects with different `toString` functions returning same values are equal",
|
||||
value1: { toString: () => "Hello world!" },
|
||||
value2: { toString: () => "Hello world!" },
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description:
|
||||
"objects with `toString` functions returning different values are not equal",
|
||||
value1: { toString: () => "Hello world!" },
|
||||
value2: { toString: () => "Hi!" },
|
||||
equal: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
description: "arrays",
|
||||
tests: [
|
||||
{
|
||||
description: "two empty arrays are equal",
|
||||
value1: [],
|
||||
value2: [],
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "equal arrays",
|
||||
value1: [1, 2, 3],
|
||||
value2: [1, 2, 3],
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "equal arrays with symbols",
|
||||
value1: a1,
|
||||
value2: a2,
|
||||
equal: true,
|
||||
},
|
||||
// {
|
||||
// description: "not equal arrays (different item)",
|
||||
// value1: [1, 2, 3],
|
||||
// value2: [1, 2, 4],
|
||||
// equal: false,
|
||||
// },
|
||||
// {
|
||||
// description: "not equal arrays (different length)",
|
||||
// value1: [1, 2, 3],
|
||||
// value2: [1, 2],
|
||||
// equal: false,
|
||||
// },
|
||||
{
|
||||
description: "equal arrays of objects",
|
||||
value1: [
|
||||
...Array.from({ length: 200000 }, (i) => ({
|
||||
a: 1,
|
||||
b: 2,
|
||||
})),
|
||||
],
|
||||
value2: [
|
||||
...Array.from({ length: 200000 }, (i) => ({
|
||||
a: 1,
|
||||
b: 2,
|
||||
})),
|
||||
],
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "equal objects",
|
||||
value1: {
|
||||
a: 1,
|
||||
b: 2,
|
||||
c: 3,
|
||||
d: 4,
|
||||
// get foo() {
|
||||
// return 1;
|
||||
// },
|
||||
},
|
||||
value2: {
|
||||
a: 1,
|
||||
b: 2,
|
||||
c: 3,
|
||||
d: 4,
|
||||
// get foo() {
|
||||
// return 1;
|
||||
// },
|
||||
},
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "equal sets",
|
||||
value1: d1,
|
||||
value2: d2,
|
||||
equal: true,
|
||||
},
|
||||
// {
|
||||
// description: "not equal arrays of objects",
|
||||
// value1: [{ a: "a" }, { b: "b" }],
|
||||
// value2: [{ a: "a" }, { b: "c" }],
|
||||
// equal: false,
|
||||
// },
|
||||
// {
|
||||
// description: "pseudo array and equivalent array are not equal",
|
||||
// value1: { 0: 0, 1: 1, length: 2 },
|
||||
// value2: [0, 1],
|
||||
// equal: false,
|
||||
// },
|
||||
],
|
||||
},
|
||||
{
|
||||
description: "Date objects",
|
||||
tests: [
|
||||
{
|
||||
description: "equal date objects",
|
||||
value1: new Date("2017-06-16T21:36:48.362Z"),
|
||||
value2: new Date("2017-06-16T21:36:48.362Z"),
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "not equal date objects",
|
||||
value1: new Date("2017-06-16T21:36:48.362Z"),
|
||||
value2: new Date("2017-01-01T00:00:00.000Z"),
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "date and string are not equal",
|
||||
value1: new Date("2017-06-16T21:36:48.362Z"),
|
||||
value2: "2017-06-16T21:36:48.362Z",
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "date and object are not equal",
|
||||
value1: new Date("2017-06-16T21:36:48.362Z"),
|
||||
value2: {},
|
||||
equal: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
description: "RegExp objects",
|
||||
tests: [
|
||||
{
|
||||
description: "equal RegExp objects",
|
||||
value1: /foo/,
|
||||
value2: /foo/,
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "not equal RegExp objects (different pattern)",
|
||||
value1: /foo/,
|
||||
value2: /bar/,
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "not equal RegExp objects (different flags)",
|
||||
value1: /foo/,
|
||||
value2: /foo/i,
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "RegExp and string are not equal",
|
||||
value1: /foo/,
|
||||
value2: "foo",
|
||||
equal: false,
|
||||
},
|
||||
{
|
||||
description: "RegExp and object are not equal",
|
||||
value1: /foo/,
|
||||
value2: {},
|
||||
equal: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
description: "functions",
|
||||
tests: [
|
||||
{
|
||||
description: "same function is equal",
|
||||
value1: func1,
|
||||
value2: func1,
|
||||
equal: true,
|
||||
},
|
||||
{
|
||||
description: "different functions are not equal",
|
||||
value1: func1,
|
||||
value2: func2,
|
||||
equal: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
description: "sample objects",
|
||||
tests: [
|
||||
{
|
||||
description: "big object",
|
||||
value1: {
|
||||
prop1: "value1",
|
||||
prop2: "value2",
|
||||
prop3: "value3",
|
||||
prop4: {
|
||||
subProp1: "sub value1",
|
||||
subProp2: {
|
||||
subSubProp1: "sub sub value1",
|
||||
subSubProp2: [1, 2, { prop2: 1, prop: 2 }, 4, 5],
|
||||
},
|
||||
},
|
||||
prop5: 1000,
|
||||
// prop6: new Date(2016, 2, 10),
|
||||
},
|
||||
value2: {
|
||||
prop5: 1000,
|
||||
prop3: "value3",
|
||||
prop1: "value1",
|
||||
prop2: "value2",
|
||||
// prop6: new Date(2016, 2, 10),
|
||||
prop4: {
|
||||
subProp2: {
|
||||
subSubProp1: "sub sub value1",
|
||||
subSubProp2: [1, 2, { prop2: 1, prop: 2 }, 4, 5],
|
||||
},
|
||||
subProp1: "sub value1",
|
||||
},
|
||||
},
|
||||
equal: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
for (let { tests, description } of fixture) {
|
||||
// if (description === "sample objects") {
|
||||
for (let { description: describe, value1, value2, equal } of tests) {
|
||||
var expected;
|
||||
group(describe, () => {
|
||||
for (let equalsFn of [Bun.deepEquals, fastDeepEquals]) {
|
||||
bench(equalsFn.name, () => {
|
||||
expected = equalsFn(value1, value2);
|
||||
if (expected !== equal) {
|
||||
throw new Error(
|
||||
`Expected ${expected} to be ${equal} for ${description}`,
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
await run();
|
||||
145
bench/snippets/define-properties.mjs
Normal file
145
bench/snippets/define-properties.mjs
Normal file
@@ -0,0 +1,145 @@
|
||||
import { bench, run } from "../node_modules/mitata/src/cli.mjs";
|
||||
|
||||
const properties = {
|
||||
closed: {
|
||||
get() {
|
||||
return this._writableState ? this._writableState.closed : false;
|
||||
},
|
||||
},
|
||||
destroyed: {
|
||||
get() {
|
||||
return this._writableState ? this._writableState.destroyed : false;
|
||||
},
|
||||
set(value) {
|
||||
if (this._writableState) {
|
||||
this._writableState.destroyed = value;
|
||||
}
|
||||
},
|
||||
},
|
||||
writable: {
|
||||
get() {
|
||||
const w = this._writableState;
|
||||
return (
|
||||
!!w &&
|
||||
w.writable !== false &&
|
||||
!w.destroyed &&
|
||||
!w.errored &&
|
||||
!w.ending &&
|
||||
!w.ended
|
||||
);
|
||||
},
|
||||
set(val) {
|
||||
if (this._writableState) {
|
||||
this._writableState.writable = !!val;
|
||||
}
|
||||
},
|
||||
},
|
||||
writableFinished: {
|
||||
get() {
|
||||
return this._writableState ? this._writableState.finished : false;
|
||||
},
|
||||
},
|
||||
writableObjectMode: {
|
||||
get() {
|
||||
return this._writableState ? this._writableState.objectMode : false;
|
||||
},
|
||||
},
|
||||
writableBuffer: {
|
||||
get() {
|
||||
return this._writableState && this._writableState.getBuffer();
|
||||
},
|
||||
},
|
||||
writableEnded: {
|
||||
get() {
|
||||
return this._writableState ? this._writableState.ending : false;
|
||||
},
|
||||
},
|
||||
writableNeedDrain: {
|
||||
get() {
|
||||
const wState = this._writableState;
|
||||
if (!wState) return false;
|
||||
return !wState.destroyed && !wState.ending && wState.needDrain;
|
||||
},
|
||||
},
|
||||
writableHighWaterMark: {
|
||||
get() {
|
||||
return this._writableState && this._writableState.highWaterMark;
|
||||
},
|
||||
},
|
||||
writableCorked: {
|
||||
get() {
|
||||
return this._writableState ? this._writableState.corked : 0;
|
||||
},
|
||||
},
|
||||
writableLength: {
|
||||
get() {
|
||||
return this._writableState && this._writableState.length;
|
||||
},
|
||||
},
|
||||
errored: {
|
||||
enumerable: false,
|
||||
get() {
|
||||
return this._writableState ? this._writableState.errored : null;
|
||||
},
|
||||
},
|
||||
writableAborted: {
|
||||
enumerable: false,
|
||||
get: function () {
|
||||
return !!(
|
||||
this._writableState.writable !== false &&
|
||||
(this._writableState.destroyed || this._writableState.errored) &&
|
||||
!this._writableState.finished
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
var count = 10_000;
|
||||
|
||||
bench("Object.defineProperty x " + count, () => {
|
||||
const prop = {
|
||||
enumerable: false,
|
||||
get: function () {
|
||||
return !!(
|
||||
this._writableState.writable !== false &&
|
||||
(this._writableState.destroyed || this._writableState.errored) &&
|
||||
!this._writableState.finished
|
||||
);
|
||||
},
|
||||
};
|
||||
for (let i = 0; i < count; i++) {
|
||||
function Hey() {
|
||||
return this;
|
||||
}
|
||||
Object.defineProperty(Hey.prototype, "writableAborted", prop);
|
||||
}
|
||||
});
|
||||
|
||||
bench("Object.defineProperties x " + count, () => {
|
||||
for (let i = 0; i < count; i++) {
|
||||
function Hey() {
|
||||
return this;
|
||||
}
|
||||
Object.defineProperties(Hey.prototype, properties);
|
||||
}
|
||||
});
|
||||
|
||||
bench("(all the keys) Object.defineProperties x " + count, () => {
|
||||
var first;
|
||||
{
|
||||
function Hey() {
|
||||
return this;
|
||||
}
|
||||
Object.defineProperties(Hey.prototype, properties);
|
||||
first = Object.getOwnPropertyDescriptors(Hey.prototype);
|
||||
}
|
||||
|
||||
for (let i = 0; i < count; i++) {
|
||||
function Hey() {
|
||||
return this;
|
||||
}
|
||||
Object.defineProperties(Hey.prototype, first);
|
||||
}
|
||||
});
|
||||
|
||||
await run();
|
||||
76
bench/snippets/dns.node.mjs
Normal file
76
bench/snippets/dns.node.mjs
Normal file
@@ -0,0 +1,76 @@
|
||||
import { lookup, resolve } from "node:dns/promises";
|
||||
import { bench, run } from "mitata";
|
||||
|
||||
bench("(cached) dns.lookup remote x 50", async () => {
|
||||
var tld = "example.com";
|
||||
const run = () => lookup(tld).catch(() => {});
|
||||
const total = 50;
|
||||
var remain = total;
|
||||
var done;
|
||||
await new Promise((resolve) => {
|
||||
for (var i = 0; i < total; i++)
|
||||
run().finally(() => {
|
||||
remain--;
|
||||
if (remain === 0) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
done = resolve;
|
||||
});
|
||||
});
|
||||
|
||||
bench("(cached in batch) dns.lookup remote x 50", async () => {
|
||||
var tld = Math.random().toString(16) + ".example.com";
|
||||
const run = () => lookup(tld).catch(() => {});
|
||||
const total = 50;
|
||||
var remain = total;
|
||||
var done;
|
||||
await new Promise((resolve) => {
|
||||
for (var i = 0; i < total; i++)
|
||||
run().finally(() => {
|
||||
remain--;
|
||||
if (remain === 0) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
done = resolve;
|
||||
});
|
||||
});
|
||||
|
||||
bench("dns.lookup remote x 50", async () => {
|
||||
var remain = 50;
|
||||
var done;
|
||||
const run = () =>
|
||||
lookup(Math.random().toString() + ".example.com").catch(() => {});
|
||||
|
||||
await new Promise((resolve) => {
|
||||
for (var i = 0; i < 50; i++)
|
||||
run().finally(() => {
|
||||
remain--;
|
||||
if (remain === 0) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
done = resolve;
|
||||
});
|
||||
});
|
||||
|
||||
bench("dns.resolve remote x 50", async () => {
|
||||
var remain = 50;
|
||||
var done;
|
||||
const run = () =>
|
||||
resolve(Math.random().toString() + ".example.com").catch(() => {});
|
||||
|
||||
await new Promise((resolve) => {
|
||||
for (var i = 0; i < 50; i++)
|
||||
run().finally(() => {
|
||||
remain--;
|
||||
if (remain === 0) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
done = resolve;
|
||||
});
|
||||
});
|
||||
|
||||
await run();
|
||||
76
bench/snippets/dns.ts
Normal file
76
bench/snippets/dns.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import { dns } from "bun";
|
||||
import { bench, run, group } from "mitata";
|
||||
|
||||
async function forEachBackend(name, fn) {
|
||||
group(name, () => {
|
||||
for (let backend of [
|
||||
"libc",
|
||||
"c-ares",
|
||||
process.platform === "darwin" ? "system" : "",
|
||||
].filter(Boolean))
|
||||
bench(backend, fn(backend));
|
||||
});
|
||||
}
|
||||
|
||||
forEachBackend("dns.lookup remote x 50", (backend) => async () => {
|
||||
const run = () =>
|
||||
dns
|
||||
.lookup(Math.random().toString(16) + ".example.com", { backend })
|
||||
.catch(() => {});
|
||||
var remain = 16;
|
||||
var done;
|
||||
await new Promise((resolve) => {
|
||||
for (var i = 0; i < 16; i++)
|
||||
run().finally(() => {
|
||||
remain--;
|
||||
if (remain === 0) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
done = resolve;
|
||||
});
|
||||
});
|
||||
|
||||
forEachBackend("(cached) dns.lookup remote x 50", (backend) => {
|
||||
var tld = "example.com";
|
||||
const run = () => dns.lookup(tld, { backend }).catch(() => {});
|
||||
|
||||
return async () => {
|
||||
const total = 50;
|
||||
var remain = total;
|
||||
var done;
|
||||
await new Promise((resolve) => {
|
||||
for (var i = 0; i < total; i++)
|
||||
run().finally(() => {
|
||||
remain--;
|
||||
if (remain === 0) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
done = resolve;
|
||||
});
|
||||
};
|
||||
});
|
||||
|
||||
forEachBackend(
|
||||
"(cached in batch) dns.lookup remote x 50",
|
||||
(backend) => async () => {
|
||||
var tld = Math.random().toString(16) + ".example.com";
|
||||
const run = () => dns.lookup(tld, { backend }).catch(() => {});
|
||||
const total = 50;
|
||||
var remain = total;
|
||||
var done;
|
||||
await new Promise((resolve) => {
|
||||
for (var i = 0; i < total; i++)
|
||||
run().finally(() => {
|
||||
remain--;
|
||||
if (remain === 0) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
done = resolve;
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
await run();
|
||||
@@ -16,18 +16,55 @@ bench("EventEmitter.emit", () => {
|
||||
});
|
||||
});
|
||||
|
||||
var monkey = Object.assign({}, EventEmitter.prototype);
|
||||
monkey.on("hello", (event) => {
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
bench("[monkey] EventEmitter.emit", () => {
|
||||
var called = false;
|
||||
monkey.emit("hello", {
|
||||
preventDefault() {
|
||||
id++;
|
||||
called = true;
|
||||
},
|
||||
});
|
||||
|
||||
if (!called) {
|
||||
throw new Error("monkey failed");
|
||||
}
|
||||
});
|
||||
|
||||
bench("EventEmitter.on x 10_000 (handler)", () => {
|
||||
var cb = () => {
|
||||
var cb = (event) => {
|
||||
event.preventDefault();
|
||||
};
|
||||
emitter.on("hey", cb);
|
||||
var called = false;
|
||||
for (let i = 0; i < 10_000; i++)
|
||||
emitter.emit("hey", {
|
||||
preventDefault() {
|
||||
id++;
|
||||
called = true;
|
||||
},
|
||||
});
|
||||
emitter.off("hey", cb);
|
||||
|
||||
if (!called) throw new Error("not called");
|
||||
});
|
||||
|
||||
bench("[monkey] EventEmitter.on x 10_000 (handler)", () => {
|
||||
var cb = () => {
|
||||
event.preventDefault();
|
||||
};
|
||||
monkey.on("hey", cb);
|
||||
for (let i = 0; i < 10_000; i++)
|
||||
monkey.emit("hey", {
|
||||
preventDefault() {
|
||||
id++;
|
||||
},
|
||||
});
|
||||
monkey.off("hey", cb);
|
||||
});
|
||||
|
||||
var target = new EventTarget();
|
||||
|
||||
10
bench/snippets/encode-into.mjs
Normal file
10
bench/snippets/encode-into.mjs
Normal file
@@ -0,0 +1,10 @@
|
||||
import { run, bench } from "../node_modules/mitata/src/cli.mjs";
|
||||
|
||||
const encoder = new TextEncoder();
|
||||
|
||||
const buffer = new Uint8Array(1024);
|
||||
bench("encodeInto", () => {
|
||||
encoder.encodeInto("Hello World!", buffer);
|
||||
});
|
||||
|
||||
await run();
|
||||
45
bench/snippets/headers.mjs
Normal file
45
bench/snippets/headers.mjs
Normal file
@@ -0,0 +1,45 @@
|
||||
import { bench, run } from "../node_modules/mitata/src/cli.mjs";
|
||||
|
||||
// pure JS implementation will optimze this out
|
||||
// bench("new Headers", function () {
|
||||
// return new Headers();
|
||||
// });
|
||||
|
||||
var big = new Headers({
|
||||
"Content-Type": "text/plain",
|
||||
"Content-Length": "123",
|
||||
hello: "there",
|
||||
"X-Custom-Header": "Hello World",
|
||||
"X-Another-Custom-Header": "Hello World",
|
||||
"X-Yet-Another-Custom-ader": "Hello World",
|
||||
"X-Yet-Another-Custom-Heder": "Hello World",
|
||||
"X-Yet-Another-Custom-Heade": "Hello World",
|
||||
"X-Yet-Another-Custom-Headz": "Hello Worlda",
|
||||
});
|
||||
|
||||
// bench("Header.get", function () {
|
||||
// return big.get("Content-Type");
|
||||
// });
|
||||
|
||||
// bench("Header.set (standard)", function () {
|
||||
// return big.set("Content-Type", "text/html");
|
||||
// });
|
||||
|
||||
// bench("Header.set (non-standard)", function () {
|
||||
// return big.set("X-My-Custom", "text/html123");
|
||||
// });
|
||||
|
||||
if (big.toJSON)
|
||||
bench("Headers.toJSON", function () {
|
||||
return big.toJSON();
|
||||
});
|
||||
|
||||
bench("Object.fromEntries(headers.entries())", function () {
|
||||
return Object.fromEntries(big.entries());
|
||||
});
|
||||
|
||||
bench("Object.fromEntries(headers)", function () {
|
||||
return Object.fromEntries(big);
|
||||
});
|
||||
|
||||
run();
|
||||
8
bench/snippets/http-hello.deno.js
Normal file
8
bench/snippets/http-hello.deno.js
Normal file
@@ -0,0 +1,8 @@
|
||||
var i = 0;
|
||||
Deno.serve({
|
||||
port: parseInt(Deno.env.get("PORT") || "3000", 10),
|
||||
handler(req) {
|
||||
if (i++ === 200_000 - 1) queueMicrotask(() => Deno.exit(0));
|
||||
return new Response("Hello, World!" + i);
|
||||
},
|
||||
});
|
||||
7
bench/snippets/http-hello.js
Normal file
7
bench/snippets/http-hello.js
Normal file
@@ -0,0 +1,7 @@
|
||||
var i = 0;
|
||||
export default {
|
||||
fetch(req) {
|
||||
if (i++ === 200_000 - 1) queueMicrotask(() => process.exit(0));
|
||||
return new Response("Hello, World!" + i);
|
||||
},
|
||||
};
|
||||
8
bench/snippets/http-hello.node.mjs
Normal file
8
bench/snippets/http-hello.node.mjs
Normal file
@@ -0,0 +1,8 @@
|
||||
import { createServer } from "node:http";
|
||||
var i = 0;
|
||||
|
||||
const server = createServer((req, res) => {
|
||||
res.writeHead(200);
|
||||
res.end("Hello, World!" + i);
|
||||
if (i++ === 200_000 - 1) queueMicrotask(() => process.exit(0));
|
||||
}).listen(parseInt(process.env.PORT || "3000", 10));
|
||||
47
bench/snippets/object-values.mjs
Normal file
47
bench/snippets/object-values.mjs
Normal file
@@ -0,0 +1,47 @@
|
||||
const obj = {
|
||||
a: 1,
|
||||
b: 2,
|
||||
c: 3,
|
||||
d: 4,
|
||||
e: 5,
|
||||
f: 6,
|
||||
g: 7,
|
||||
h: 8,
|
||||
i: 9,
|
||||
j: 10,
|
||||
k: 11,
|
||||
l: 12,
|
||||
m: 13,
|
||||
n: 14,
|
||||
o: 15,
|
||||
p: 16,
|
||||
q: 17,
|
||||
r: 18,
|
||||
s: 19,
|
||||
t: 20,
|
||||
u: 21,
|
||||
v: 22,
|
||||
w: 23,
|
||||
};
|
||||
|
||||
import { bench, group, run } from "mitata";
|
||||
|
||||
var val = 0;
|
||||
bench("Object.values(literal)", () => {
|
||||
obj.a = val++;
|
||||
Object.values(obj);
|
||||
});
|
||||
const objWithMethods = {
|
||||
...obj,
|
||||
toString() {},
|
||||
valueOf() {},
|
||||
[Symbol.iterator]() {},
|
||||
[Symbol.toPrimitive]() {},
|
||||
};
|
||||
var val = 0;
|
||||
bench("Object.values(literal with methods)", () => {
|
||||
objWithMethods.a = val++;
|
||||
Object.values(objWithMethods);
|
||||
});
|
||||
|
||||
await run();
|
||||
21
bench/snippets/process.mjs
Normal file
21
bench/snippets/process.mjs
Normal file
@@ -0,0 +1,21 @@
|
||||
import { bench, run } from "mitata";
|
||||
|
||||
bench("process.stderr.write('hey')", () => {
|
||||
process.stderr.write("hey");
|
||||
});
|
||||
|
||||
const long = "hey".repeat(10000);
|
||||
bench("process.stderr.write('hey'.repeat(10_000))", () => {
|
||||
process.stderr.write(long);
|
||||
});
|
||||
|
||||
const longUTF16 = "🥟🐰".repeat(10000);
|
||||
bench("process.stderr.write('🥟🐰')", () => {
|
||||
process.stderr.write("🥟🐰");
|
||||
});
|
||||
|
||||
bench("process.stderr.write('🥟🐰'.repeat(10_000))", () => {
|
||||
process.stderr.write(longUTF16);
|
||||
});
|
||||
|
||||
await run();
|
||||
45
bench/snippets/read-file.mjs
Normal file
45
bench/snippets/read-file.mjs
Normal file
@@ -0,0 +1,45 @@
|
||||
import { readFileSync, writeFileSync } from "node:fs";
|
||||
import { bench, run } from "mitata";
|
||||
|
||||
var short = (function () {
|
||||
const text = "Hello World!";
|
||||
const path = "/tmp/bun-bench-short.text";
|
||||
writeFileSync(path, text, "utf8");
|
||||
return { path, length: text.length };
|
||||
})();
|
||||
var shortUTF16 = (function () {
|
||||
const text = "Hello World 💕💕💕";
|
||||
const path = "/tmp/bun-bench-shortUTF16.text";
|
||||
writeFileSync(path, text, "utf8");
|
||||
return { path, length: text.length };
|
||||
})();
|
||||
var long = (function () {
|
||||
const text = "Hello World!".repeat(1024);
|
||||
const path = "/tmp/bun-bench-long.text";
|
||||
writeFileSync(path, text, "utf8");
|
||||
return { path, length: text.length };
|
||||
})();
|
||||
var longUTF16 = (function () {
|
||||
const text = "Hello World 💕💕💕".repeat(1024);
|
||||
const path = "/tmp/bun-bench-longUTF16.text";
|
||||
writeFileSync(path, text, "utf8");
|
||||
return { path, length: text.length };
|
||||
})();
|
||||
|
||||
bench(`${short.length} ascii`, () => {
|
||||
readFileSync(short.path, "utf-8");
|
||||
});
|
||||
|
||||
bench(`${short.length} utf8`, () => {
|
||||
readFileSync(shortUTF16.path, "utf-8");
|
||||
});
|
||||
|
||||
bench(`${long.length} ascii`, () => {
|
||||
readFileSync(long.path, "utf-8");
|
||||
});
|
||||
|
||||
bench(`${longUTF16.length} utf8`, () => {
|
||||
readFileSync(longUTF16.path, "utf-8");
|
||||
});
|
||||
|
||||
await run();
|
||||
9
bench/snippets/spawn.deno.mjs
Normal file
9
bench/snippets/spawn.deno.mjs
Normal file
@@ -0,0 +1,9 @@
|
||||
import { bench, run } from "../node_modules/mitata/src/cli.mjs";
|
||||
|
||||
bench("spawnSync echo hi", () => {
|
||||
Deno.spawnSync("echo", {
|
||||
args: ["hi"],
|
||||
});
|
||||
});
|
||||
|
||||
await run();
|
||||
24
bench/snippets/stderr.mjs
Normal file
24
bench/snippets/stderr.mjs
Normal file
@@ -0,0 +1,24 @@
|
||||
import { run, bench } from "mitata";
|
||||
|
||||
var writer = globalThis.Bun ? Bun.stderr.writer() : undefined;
|
||||
if (writer)
|
||||
bench('Bun.stderr.write("Hello World")', () => {
|
||||
writer.write("Hello World\n");
|
||||
writer.flush();
|
||||
});
|
||||
|
||||
if (process.stderr) {
|
||||
bench("process.stderr.write", () => {
|
||||
process.stderr.write("Hello World\n");
|
||||
});
|
||||
}
|
||||
|
||||
bench("console.error('Hello World')", () => {
|
||||
console.error("Hello World");
|
||||
});
|
||||
|
||||
bench("console.error('Hello World', 'wat')", () => {
|
||||
console.error("Hello World", "wat");
|
||||
});
|
||||
|
||||
await run({ percentiles: false });
|
||||
@@ -34,16 +34,18 @@ setInterval(() => {
|
||||
counter = 0;
|
||||
}, 1000);
|
||||
|
||||
const server = listen({
|
||||
socket: handlers,
|
||||
hostname: "localhost",
|
||||
port: 8080,
|
||||
data: {
|
||||
isServer: true,
|
||||
},
|
||||
});
|
||||
const connection = await connect({
|
||||
socket: handlers,
|
||||
hostname: "localhost",
|
||||
port: 8080,
|
||||
});
|
||||
if (process.env.IS_SERVER)
|
||||
listen({
|
||||
socket: handlers,
|
||||
hostname: "0.0.0.0",
|
||||
port: 8000,
|
||||
data: {
|
||||
isServer: true,
|
||||
},
|
||||
});
|
||||
else
|
||||
await connect({
|
||||
socket: handlers,
|
||||
hostname: "localhost",
|
||||
port: 8000,
|
||||
});
|
||||
|
||||
@@ -29,24 +29,68 @@ const handlers = {
|
||||
},
|
||||
};
|
||||
|
||||
const server = net.createServer(function (socket) {
|
||||
socket.data = { isServer: true };
|
||||
if (process.env.IS_SERVER) {
|
||||
if (net.createServer) {
|
||||
const server = net.createServer(function (socket) {
|
||||
socket.data = { isServer: true };
|
||||
socket.on("connection", handlers.open.bind(socket));
|
||||
socket.on("data", handlers.data.bind(socket));
|
||||
socket.on("drain", handlers.drain.bind(socket));
|
||||
socket.setEncoding("binary");
|
||||
});
|
||||
|
||||
setInterval(() => {
|
||||
console.log("Wrote", counter, "messages");
|
||||
counter = 0;
|
||||
}, 1000);
|
||||
|
||||
server.listen(8000);
|
||||
} else {
|
||||
const handlers = {
|
||||
open(socket) {
|
||||
if (!socket.data?.isServer) {
|
||||
if (!socket.write(msg)) {
|
||||
socket.data = { pending: msg };
|
||||
}
|
||||
}
|
||||
},
|
||||
data(socket, buffer) {
|
||||
if (!socket.write(buffer)) {
|
||||
socket.data = { pending: buffer };
|
||||
return;
|
||||
}
|
||||
counter++;
|
||||
},
|
||||
drain(socket) {
|
||||
const pending = socket.data?.pending;
|
||||
if (!pending) return;
|
||||
if (socket.write(pending)) {
|
||||
socket.data = undefined;
|
||||
counter++;
|
||||
return;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
setInterval(() => {
|
||||
console.log("Wrote", counter, "messages");
|
||||
counter = 0;
|
||||
}, 1000);
|
||||
|
||||
const server = Bun.listen({
|
||||
socket: handlers,
|
||||
hostname: "0.0.0.0",
|
||||
port: 8000,
|
||||
data: {
|
||||
isServer: true,
|
||||
},
|
||||
});
|
||||
}
|
||||
} else {
|
||||
const socket = net.connect({ host: "0.0.0.0", port: 8000 }, () => {});
|
||||
socket.on("connection", handlers.open.bind(socket));
|
||||
socket.on("data", handlers.data.bind(socket));
|
||||
socket.on("drain", handlers.drain.bind(socket));
|
||||
socket.setEncoding("binary");
|
||||
});
|
||||
|
||||
setInterval(() => {
|
||||
console.log("Wrote", counter, "messages");
|
||||
counter = 0;
|
||||
}, 1000);
|
||||
|
||||
server.listen(8000);
|
||||
|
||||
const socket = net.connect({ host: "localhost", port: 8000 }, () => {});
|
||||
socket.on("connection", handlers.open.bind(socket));
|
||||
socket.on("data", handlers.data.bind(socket));
|
||||
socket.on("drain", handlers.drain.bind(socket));
|
||||
socket.setEncoding("binary");
|
||||
socket.write(buffer);
|
||||
socket.write(buffer);
|
||||
}
|
||||
|
||||
49
bench/snippets/text-decoder.mjs
Normal file
49
bench/snippets/text-decoder.mjs
Normal file
@@ -0,0 +1,49 @@
|
||||
import { bench, run } from "../node_modules/mitata/src/cli.mjs";
|
||||
|
||||
var short = new TextEncoder().encode("Hello World!");
|
||||
var shortUTF16 = new TextEncoder().encode("Hello World 💕💕💕");
|
||||
var long = new TextEncoder().encode("Hello World!".repeat(1024));
|
||||
var longUTF16 = new TextEncoder().encode("Hello World 💕💕💕".repeat(1024));
|
||||
bench(`${short.length} ascii`, () => {
|
||||
var decoder = new TextDecoder();
|
||||
decoder.decode(short);
|
||||
});
|
||||
|
||||
bench(`${short.length} utf8`, () => {
|
||||
var decoder = new TextDecoder();
|
||||
decoder.decode(shortUTF16);
|
||||
});
|
||||
|
||||
bench(`${long.length} ascii`, () => {
|
||||
var decoder = new TextDecoder();
|
||||
decoder.decode(long);
|
||||
});
|
||||
|
||||
bench(`${longUTF16.length} utf8`, () => {
|
||||
var decoder = new TextDecoder();
|
||||
decoder.decode(longUTF16);
|
||||
});
|
||||
|
||||
if ("Buffer" in globalThis) {
|
||||
const buffer_short = Buffer.from(short);
|
||||
bench(`Buffer ${buffer_short.length} ascii`, () => {
|
||||
buffer_short.toString("ascii");
|
||||
});
|
||||
|
||||
const buffer_shortUTF16 = Buffer.from(short);
|
||||
bench(`Buffer ${buffer_shortUTF16.length} utf8`, () => {
|
||||
buffer_shortUTF16.toString("utf8");
|
||||
});
|
||||
|
||||
const buffer_long = Buffer.from(long);
|
||||
bench(`Buffer ${buffer_long.length} ascii`, () => {
|
||||
buffer_long.toString("ascii");
|
||||
});
|
||||
|
||||
const buffer_longUTF16 = Buffer.from(longUTF16);
|
||||
bench(`Buffer ${buffer_longUTF16.length} utf8`, () => {
|
||||
buffer_longUTF16.toString("utf8");
|
||||
});
|
||||
}
|
||||
|
||||
await run();
|
||||
33
bench/snippets/text-encoder.mjs
Normal file
33
bench/snippets/text-encoder.mjs
Normal file
@@ -0,0 +1,33 @@
|
||||
import { bench, run } from "mitata";
|
||||
|
||||
var short = "Hello World!";
|
||||
var shortUTF16 = "Hello World 💕💕💕";
|
||||
var long = "Hello World!".repeat(1024);
|
||||
var longUTF16 = "Hello World 💕💕💕".repeat(1024);
|
||||
var encoder = new TextEncoder();
|
||||
|
||||
bench(`4 ascii`, () => {
|
||||
encoder.encode("heyo");
|
||||
});
|
||||
|
||||
bench(`4 utf8`, () => {
|
||||
encoder.encode("💕💕");
|
||||
});
|
||||
|
||||
bench(`${short.length} ascii`, () => {
|
||||
encoder.encode(short);
|
||||
});
|
||||
|
||||
bench(`${short.length} utf8`, () => {
|
||||
encoder.encode(shortUTF16);
|
||||
});
|
||||
|
||||
bench(`${long.length} ascii`, () => {
|
||||
encoder.encode(long);
|
||||
});
|
||||
|
||||
bench(`${longUTF16.length} utf8`, () => {
|
||||
encoder.encode(longUTF16);
|
||||
});
|
||||
|
||||
await run();
|
||||
25
bench/snippets/write-file.mjs
Normal file
25
bench/snippets/write-file.mjs
Normal file
@@ -0,0 +1,25 @@
|
||||
import { readFileSync, writeFileSync } from "node:fs";
|
||||
import { bench, run } from "mitata";
|
||||
|
||||
var short = "Hello World!";
|
||||
var shortUTF16 = "Hello World 💕💕💕";
|
||||
var long = "Hello World!".repeat(1024);
|
||||
var longUTF16 = "Hello World 💕💕💕".repeat(1024);
|
||||
|
||||
bench(`${short.length} ascii`, () => {
|
||||
writeFileSync("/tmp/bun.bench-out.txt", short);
|
||||
});
|
||||
|
||||
bench(`${short.length} utf8`, () => {
|
||||
writeFileSync("/tmp/bun.bench-out.txt", shortUTF16);
|
||||
});
|
||||
|
||||
bench(`${long.length} ascii`, () => {
|
||||
writeFileSync("/tmp/bun.bench-out.txt", long);
|
||||
});
|
||||
|
||||
bench(`${longUTF16.length} utf8`, () => {
|
||||
writeFileSync("/tmp/bun.bench-out.txt", longUTF16);
|
||||
});
|
||||
|
||||
await run();
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Database } from "https://deno.land/x/sqlite3@0.6.1/mod.ts";
|
||||
import { Database } from "https://deno.land/x/sqlite3@0.7.2/mod.ts";
|
||||
import { run, bench } from "../node_modules/mitata/src/cli.mjs";
|
||||
|
||||
const db = new Database("./src/northwind.sqlite");
|
||||
|
||||
14
bench/sqlite/package-lock.json
generated
14
bench/sqlite/package-lock.json
generated
@@ -6,7 +6,7 @@
|
||||
"": {
|
||||
"name": "bench",
|
||||
"dependencies": {
|
||||
"better-sqlite3": "^7.6.0"
|
||||
"better-sqlite3": "^8.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/base64-js": {
|
||||
@@ -29,9 +29,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/better-sqlite3": {
|
||||
"version": "7.6.0",
|
||||
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.0.tgz",
|
||||
"integrity": "sha512-wYckL8S8RHP+KKNsZuJGZ7z/6FFmVgwd0U8jSv6t997C+EFR1yvi8p2WIpTb10jiV5rRA5VtMdgtAZFcAnK3Iw==",
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.0.1.tgz",
|
||||
"integrity": "sha512-JhTZjpyapA1icCEjIZB4TSSgkGdFgpWZA2Wszg7Cf4JwJwKQmbvuNnJBeR+EYG/Z29OXvR4G//Rbg31BW/Z7Yg==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"bindings": "^1.5.0",
|
||||
@@ -443,9 +443,9 @@
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
|
||||
},
|
||||
"better-sqlite3": {
|
||||
"version": "7.6.0",
|
||||
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.0.tgz",
|
||||
"integrity": "sha512-wYckL8S8RHP+KKNsZuJGZ7z/6FFmVgwd0U8jSv6t997C+EFR1yvi8p2WIpTb10jiV5rRA5VtMdgtAZFcAnK3Iw==",
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.0.1.tgz",
|
||||
"integrity": "sha512-JhTZjpyapA1icCEjIZB4TSSgkGdFgpWZA2Wszg7Cf4JwJwKQmbvuNnJBeR+EYG/Z29OXvR4G//Rbg31BW/Z7Yg==",
|
||||
"requires": {
|
||||
"bindings": "^1.5.0",
|
||||
"prebuild-install": "^7.1.0"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "bench",
|
||||
"dependencies": {
|
||||
"better-sqlite3": "^7.6.0"
|
||||
"better-sqlite3": "^8.0.1"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "exit 0",
|
||||
|
||||
257
build.zig
257
build.zig
@@ -1,18 +1,21 @@
|
||||
const std = @import("std");
|
||||
const resolve_path = @import("./src/resolver/resolve_path.zig");
|
||||
|
||||
fn pkgPath(comptime out: []const u8) std.build.FileSource {
|
||||
const outpath = comptime std.fs.path.dirname(@src().file).? ++ std.fs.path.sep_str ++ out;
|
||||
return .{ .path = outpath };
|
||||
if (comptime std.fs.path.dirname(@src().file)) |base| {
|
||||
const outpath = comptime base ++ std.fs.path.sep_str ++ out;
|
||||
return .{ .path = outpath };
|
||||
} else {
|
||||
return .{ .path = out };
|
||||
}
|
||||
}
|
||||
pub fn addPicoHTTP(step: *std.build.LibExeObjStep, comptime with_obj: bool) void {
|
||||
step.addIncludeDir("src/deps");
|
||||
step.addIncludePath("src/deps");
|
||||
|
||||
if (with_obj) {
|
||||
step.addObjectFile("src/deps/picohttpparser.o");
|
||||
}
|
||||
|
||||
step.addIncludeDir("src/deps");
|
||||
step.addIncludePath("src/deps");
|
||||
|
||||
if (with_obj) {
|
||||
step.addObjectFile(panicIfNotFound("src/deps/picohttpparser.o"));
|
||||
@@ -40,45 +43,27 @@ const color_map = std.ComptimeStringMap([]const u8, .{
|
||||
&.{ "yellow", "33m" },
|
||||
});
|
||||
|
||||
fn addInternalPackages(step: *std.build.LibExeObjStep, _: std.mem.Allocator, target: anytype) !void {
|
||||
var boringssl: std.build.Pkg = .{
|
||||
.name = "boringssl",
|
||||
.source = pkgPath("src/boringssl.zig"),
|
||||
};
|
||||
|
||||
var datetime: std.build.Pkg = .{
|
||||
.name = "datetime",
|
||||
.source = pkgPath("src/deps/zig-datetime/src/datetime.zig"),
|
||||
};
|
||||
|
||||
var thread_pool: std.build.Pkg = .{
|
||||
.name = "thread_pool",
|
||||
.source = pkgPath("src/thread_pool.zig"),
|
||||
};
|
||||
|
||||
var picohttp: std.build.Pkg = .{
|
||||
.name = "picohttp",
|
||||
.source = pkgPath("src/deps/picohttp.zig"),
|
||||
var compiler_rt_path: []const u8 = "";
|
||||
var compiler_rt_path_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined;
|
||||
fn addInternalPackages(step: *std.build.LibExeObjStep, allocator: std.mem.Allocator, zig_exe: []const u8, target: anytype) !void {
|
||||
var bun = std.build.Pkg{
|
||||
.name = "bun",
|
||||
.source = pkgPath("src/bun_redirect.zig"),
|
||||
};
|
||||
|
||||
var io_darwin: std.build.Pkg = .{
|
||||
.name = "io",
|
||||
.name = "async_io",
|
||||
.source = pkgPath("src/io/io_darwin.zig"),
|
||||
};
|
||||
var io_linux: std.build.Pkg = .{
|
||||
.name = "io",
|
||||
.name = "async_io",
|
||||
.source = pkgPath("src/io/io_linux.zig"),
|
||||
};
|
||||
var io_stub: std.build.Pkg = .{
|
||||
.name = "io",
|
||||
.name = "async_io",
|
||||
.source = pkgPath("src/io/io_stub.zig"),
|
||||
};
|
||||
|
||||
var lol_html: std.build.Pkg = .{
|
||||
.name = "lolhtml",
|
||||
.source = pkgPath("src/deps/lol-html.zig"),
|
||||
};
|
||||
|
||||
var io = if (target.isDarwin())
|
||||
io_darwin
|
||||
else if (target.isLinux())
|
||||
@@ -86,21 +71,6 @@ fn addInternalPackages(step: *std.build.LibExeObjStep, _: std.mem.Allocator, tar
|
||||
else
|
||||
io_stub;
|
||||
|
||||
var strings: std.build.Pkg = .{
|
||||
.name = "strings",
|
||||
.source = pkgPath("src/string_immutable.zig"),
|
||||
};
|
||||
|
||||
var clap: std.build.Pkg = .{
|
||||
.name = "clap",
|
||||
.source = pkgPath("src/deps/zig-clap/clap.zig"),
|
||||
};
|
||||
|
||||
var http: std.build.Pkg = .{
|
||||
.name = "http",
|
||||
.source = pkgPath("src/http_client_async.zig"),
|
||||
};
|
||||
|
||||
var javascript_core_real: std.build.Pkg = .{
|
||||
.name = "javascript_core",
|
||||
.source = pkgPath("src/jsc.zig"),
|
||||
@@ -111,59 +81,55 @@ fn addInternalPackages(step: *std.build.LibExeObjStep, _: std.mem.Allocator, tar
|
||||
.source = pkgPath("src/jsc_stub.zig"),
|
||||
};
|
||||
|
||||
var uws: std.build.Pkg = .{
|
||||
.name = "uws",
|
||||
.source = pkgPath("src/deps/uws.zig"),
|
||||
};
|
||||
|
||||
var javascript_core = if (target.getOsTag() == .freestanding)
|
||||
javascript_core_stub
|
||||
else
|
||||
javascript_core_real;
|
||||
|
||||
var analytics: std.build.Pkg = .{
|
||||
.name = "analytics",
|
||||
.source = pkgPath("src/analytics.zig"),
|
||||
};
|
||||
|
||||
io.dependencies = &.{analytics};
|
||||
uws.dependencies = &.{boringssl};
|
||||
javascript_core.dependencies = &.{ http, strings, picohttp, io, uws };
|
||||
http.dependencies = &.{
|
||||
strings,
|
||||
picohttp,
|
||||
io,
|
||||
boringssl,
|
||||
thread_pool,
|
||||
uws,
|
||||
};
|
||||
thread_pool.dependencies = &.{ io, http };
|
||||
http.dependencies = &.{
|
||||
strings,
|
||||
picohttp,
|
||||
io,
|
||||
boringssl,
|
||||
thread_pool,
|
||||
uws,
|
||||
};
|
||||
thread_pool.dependencies = &.{ io, http };
|
||||
|
||||
thread_pool.dependencies = &.{
|
||||
io,
|
||||
http,
|
||||
};
|
||||
|
||||
step.addPackage(thread_pool);
|
||||
step.addPackage(picohttp);
|
||||
javascript_core.dependencies = &[_]std.build.Pkg{};
|
||||
step.addPackage(io);
|
||||
step.addPackage(strings);
|
||||
step.addPackage(clap);
|
||||
step.addPackage(http);
|
||||
step.addPackage(boringssl);
|
||||
step.addPackage(javascript_core);
|
||||
step.addPackage(datetime);
|
||||
step.addPackage(lol_html);
|
||||
step.addPackage(uws);
|
||||
step.addPackage(bun);
|
||||
|
||||
const paths_to_try = .{
|
||||
"{s}/../lib/compiler_rt/stack_probe.zig",
|
||||
"{s}/../../lib/compiler_rt/stack_probe.zig",
|
||||
"{s}/../../../lib/compiler_rt/stack_probe.zig",
|
||||
"{s}/../../../../lib/compiler_rt/stack_probe.zig",
|
||||
"{s}/../lib/zig/compiler_rt/stack_probe.zig",
|
||||
"{s}/../../lib/zig/compiler_rt/stack_probe.zig",
|
||||
"{s}/../../../lib/zig/compiler_rt/stack_probe.zig",
|
||||
"{s}/../../../../lib/zig/compiler_rt/stack_probe.zig",
|
||||
};
|
||||
var found = false;
|
||||
if (compiler_rt_path.len > 0) {
|
||||
const compiler_rt: std.build.Pkg = .{
|
||||
.name = "compiler_rt",
|
||||
.source = .{ .path = compiler_rt_path },
|
||||
};
|
||||
found = true;
|
||||
step.addPackage(compiler_rt);
|
||||
} else {
|
||||
inline for (paths_to_try) |path_fmt| {
|
||||
if (!found) brk: {
|
||||
// workaround for https://github.com/ziglang/zig/issues/14099
|
||||
const path = try std.fmt.allocPrint(allocator, path_fmt, .{zig_exe});
|
||||
var target_path = std.os.realpath(
|
||||
std.fs.path.resolve(allocator, &.{path}) catch break :brk,
|
||||
&compiler_rt_path_buf,
|
||||
) catch break :brk;
|
||||
const compiler_rt: std.build.Pkg = .{
|
||||
.name = "compiler_rt",
|
||||
.source = .{ .path = target_path },
|
||||
};
|
||||
found = true;
|
||||
step.addPackage(compiler_rt);
|
||||
compiler_rt_path = target_path;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
std.io.getStdErr().writeAll("\nwarning: Could not find compiler_rt. This might cause a build error until https://github.com/ziglang/zig/issues/14099 is fixed.\n\n") catch {};
|
||||
}
|
||||
}
|
||||
|
||||
const BunBuildOptions = struct {
|
||||
@@ -172,6 +138,7 @@ const BunBuildOptions = struct {
|
||||
baseline: bool = false,
|
||||
bindgen: bool = false,
|
||||
sizegen: bool = false,
|
||||
base_path: [:0]const u8 = "",
|
||||
|
||||
pub fn step(this: BunBuildOptions, b: anytype) *std.build.OptionsStep {
|
||||
var opts = b.addOptions();
|
||||
@@ -180,6 +147,7 @@ const BunBuildOptions = struct {
|
||||
opts.addOption(@TypeOf(this.baseline), "baseline", this.baseline);
|
||||
opts.addOption(@TypeOf(this.bindgen), "bindgen", this.bindgen);
|
||||
opts.addOption(@TypeOf(this.sizegen), "sizegen", this.sizegen);
|
||||
opts.addOption(@TypeOf(this.base_path), "base_path", this.base_path);
|
||||
return opts;
|
||||
}
|
||||
};
|
||||
@@ -194,6 +162,18 @@ fn panicIfNotFound(comptime filepath: []const u8) []const u8 {
|
||||
return filepath;
|
||||
}
|
||||
|
||||
const fmt = struct {
|
||||
pub usingnamespace @import("std").fmt;
|
||||
|
||||
pub fn hexInt(value: anytype) @TypeOf(std.fmt.fmtSliceHexLower("")) {
|
||||
return std.fmt.fmtSliceHexLower(std.mem.asBytes(&value));
|
||||
}
|
||||
|
||||
pub fn hexIntUp(value: anytype) @TypeOf(std.fmt.fmtSliceHexUpper("")) {
|
||||
return std.fmt.fmtSliceHexUpper(std.mem.asBytes(&value));
|
||||
}
|
||||
};
|
||||
|
||||
fn updateRuntime() anyerror!void {
|
||||
var runtime_out_file = try std.fs.cwd().openFile("src/runtime.out.js", .{ .mode = .read_only });
|
||||
const runtime_hash = std.hash.Wyhash.hash(
|
||||
@@ -202,7 +182,7 @@ fn updateRuntime() anyerror!void {
|
||||
);
|
||||
const runtime_version_file = std.fs.cwd().createFile("src/runtime.version", .{ .truncate = true }) catch std.debug.panic("Failed to create src/runtime.version", .{});
|
||||
defer runtime_version_file.close();
|
||||
runtime_version_file.writer().print("{x}", .{runtime_hash}) catch unreachable;
|
||||
runtime_version_file.writer().print("{any}", .{fmt.hexInt(runtime_hash)}) catch unreachable;
|
||||
var fallback_out_file = try std.fs.cwd().openFile("src/fallback.out.js", .{ .mode = .read_only });
|
||||
const fallback_hash = std.hash.Wyhash.hash(
|
||||
0,
|
||||
@@ -211,7 +191,7 @@ fn updateRuntime() anyerror!void {
|
||||
|
||||
const fallback_version_file = std.fs.cwd().createFile("src/fallback.version", .{ .truncate = true }) catch std.debug.panic("Failed to create src/fallback.version", .{});
|
||||
|
||||
fallback_version_file.writer().print("{x}", .{fallback_hash}) catch unreachable;
|
||||
fallback_version_file.writer().print("{any}", .{fmt.hexInt(fallback_hash)}) catch unreachable;
|
||||
|
||||
fallback_version_file.close();
|
||||
}
|
||||
@@ -234,7 +214,6 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
|
||||
mode = b.standardReleaseOptions();
|
||||
|
||||
var exe: *std.build.LibExeObjStep = undefined;
|
||||
var output_dir_buf = std.mem.zeroes([4096]u8);
|
||||
var bin_label = if (mode == std.builtin.Mode.Debug) "packages/debug-bun-" else "packages/bun-";
|
||||
|
||||
@@ -271,8 +250,8 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
|
||||
var triplet = triplet_buf[0 .. osname.len + cpuArchName.len + 1];
|
||||
|
||||
if (std.os.getenv("OUTPUT_DIR")) |output_dir_| {
|
||||
output_dir = output_dir_;
|
||||
if (b.option([]const u8, "output-dir", "target to install to") orelse std.os.getenv("OUTPUT_DIR")) |output_dir_| {
|
||||
output_dir = b.pathFromRoot(output_dir_);
|
||||
} else {
|
||||
const output_dir_base = try std.fmt.bufPrint(&output_dir_buf, "{s}{s}", .{ bin_label, triplet });
|
||||
output_dir = b.pathFromRoot(output_dir_base);
|
||||
@@ -280,21 +259,13 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
|
||||
std.fs.cwd().makePath(output_dir) catch {};
|
||||
const bun_executable_name = if (mode == std.builtin.Mode.Debug) "bun-debug" else "bun";
|
||||
exe = b.addExecutable(bun_executable_name, if (target.getOsTag() == std.Target.Os.Tag.freestanding)
|
||||
const root_src = if (target.getOsTag() == std.Target.Os.Tag.freestanding)
|
||||
"src/main_wasm.zig"
|
||||
else
|
||||
"src/main.zig");
|
||||
// exe.setLibCFile("libc.txt");
|
||||
exe.linkLibC();
|
||||
// exe.linkLibCpp();
|
||||
"root.zig";
|
||||
|
||||
exe.setOutputDir(output_dir);
|
||||
updateRuntime() catch {};
|
||||
|
||||
exe.setTarget(target);
|
||||
exe.setBuildMode(mode);
|
||||
b.install_path = output_dir;
|
||||
|
||||
const min_version: std.builtin.Version = if (target.getOsTag() != .freestanding)
|
||||
target.getOsVersionMin().semver
|
||||
else .{ .major = 0, .minor = 0, .patch = 0 };
|
||||
@@ -303,20 +274,9 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
target.getOsVersionMax().semver
|
||||
else .{ .major = 0, .minor = 0, .patch = 0 };
|
||||
|
||||
// exe.want_lto = true;
|
||||
defer b.default_step.dependOn(&b.addLog("Output: {s}/{s}\n", .{ output_dir, bun_executable_name }).step);
|
||||
defer b.default_step.dependOn(&b.addLog(
|
||||
"Build {s} v{} - v{}\n",
|
||||
.{
|
||||
triplet,
|
||||
min_version,
|
||||
max_version,
|
||||
},
|
||||
).step);
|
||||
|
||||
var obj_step = b.step("obj", "Build bun as a .o file");
|
||||
var obj = b.addObject(bun_executable_name, exe.root_src.?.path);
|
||||
|
||||
obj_step.dependOn(&b.addLog("Output: {s}/{s}\n", .{ output_dir, bun_executable_name }).step);
|
||||
var obj = b.addObject(bun_executable_name, root_src);
|
||||
var default_build_options: BunBuildOptions = brk: {
|
||||
const is_baseline = arch.isX86() and (target.cpu_model == .baseline or
|
||||
!std.Target.x86.featureSetHas(target.getCpuFeatures(), .avx2));
|
||||
@@ -351,6 +311,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
.sha = git_sha,
|
||||
.baseline = is_baseline,
|
||||
.bindgen = false,
|
||||
.base_path = try b.allocator.dupeZ(u8, b.pathFromRoot(".")),
|
||||
};
|
||||
};
|
||||
|
||||
@@ -362,6 +323,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
try addInternalPackages(
|
||||
obj,
|
||||
b.allocator,
|
||||
b.zig_exe,
|
||||
target,
|
||||
);
|
||||
|
||||
@@ -387,9 +349,8 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
).step);
|
||||
}
|
||||
|
||||
obj_step.dependOn(&obj.step);
|
||||
defer obj_step.dependOn(&obj.step);
|
||||
|
||||
obj.setOutputDir(output_dir);
|
||||
obj.setBuildMode(mode);
|
||||
|
||||
var actual_build_options = default_build_options;
|
||||
@@ -406,7 +367,9 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
obj.bundle_compiler_rt = true;
|
||||
obj.omit_frame_pointer = mode != .Debug;
|
||||
|
||||
b.default_step.dependOn(&obj.step);
|
||||
if (b.option(bool, "for-editor", "Do not emit bin, just check for errors") orelse false) {
|
||||
obj.emit_bin = .no_emit;
|
||||
}
|
||||
|
||||
if (target.getOsTag() == .linux) {
|
||||
// obj.want_lto = tar;
|
||||
@@ -423,7 +386,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
const headers_step = b.step("headers-obj", "Build JavaScriptCore headers");
|
||||
var headers_obj: *std.build.LibExeObjStep = b.addObject("headers", "src/bindgen.zig");
|
||||
defer headers_step.dependOn(&headers_obj.step);
|
||||
try configureObjectStep(b, headers_obj, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, headers_obj, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
var headers_build_options = default_build_options;
|
||||
headers_build_options.bindgen = true;
|
||||
headers_obj.addOptions("build_options", default_build_options.step(b));
|
||||
@@ -438,14 +401,14 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
// wasm_step.link_function_sections = true;
|
||||
// wasm_step.link_emit_relocs = true;
|
||||
// wasm_step.single_threaded = true;
|
||||
try configureObjectStep(b, wasm_step, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, wasm_step, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
}
|
||||
|
||||
{
|
||||
const headers_step = b.step("httpbench-obj", "Build HTTPBench tool (object files)");
|
||||
var headers_obj: *std.build.LibExeObjStep = b.addObject("httpbench", "misctools/http_bench.zig");
|
||||
defer headers_step.dependOn(&headers_obj.step);
|
||||
try configureObjectStep(b, headers_obj, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, headers_obj, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
headers_obj.addOptions("build_options", default_build_options.step(b));
|
||||
}
|
||||
|
||||
@@ -453,7 +416,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
const headers_step = b.step("machbench-obj", "Build Machbench tool (object files)");
|
||||
var headers_obj: *std.build.LibExeObjStep = b.addObject("machbench", "misctools/machbench.zig");
|
||||
defer headers_step.dependOn(&headers_obj.step);
|
||||
try configureObjectStep(b, headers_obj, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, headers_obj, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
headers_obj.addOptions("build_options", default_build_options.step(b));
|
||||
}
|
||||
|
||||
@@ -461,7 +424,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
const headers_step = b.step("fetch-obj", "Build fetch (object files)");
|
||||
var headers_obj: *std.build.LibExeObjStep = b.addObject("fetch", "misctools/fetch.zig");
|
||||
defer headers_step.dependOn(&headers_obj.step);
|
||||
try configureObjectStep(b, headers_obj, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, headers_obj, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
headers_obj.addOptions("build_options", default_build_options.step(b));
|
||||
}
|
||||
|
||||
@@ -469,7 +432,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
const headers_step = b.step("string-bench", "Build string bench");
|
||||
var headers_obj: *std.build.LibExeObjStep = b.addExecutable("string-bench", "src/bench/string-handling.zig");
|
||||
defer headers_step.dependOn(&headers_obj.step);
|
||||
try configureObjectStep(b, headers_obj, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, headers_obj, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
headers_obj.addOptions("build_options", default_build_options.step(b));
|
||||
}
|
||||
|
||||
@@ -477,7 +440,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
const headers_step = b.step("sha-bench-obj", "Build sha bench");
|
||||
var headers_obj: *std.build.LibExeObjStep = b.addObject("sha", "src/sha.zig");
|
||||
defer headers_step.dependOn(&headers_obj.step);
|
||||
try configureObjectStep(b, headers_obj, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, headers_obj, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
headers_obj.addOptions("build_options", default_build_options.step(b));
|
||||
}
|
||||
|
||||
@@ -485,7 +448,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
const headers_step = b.step("vlq-bench", "Build vlq bench");
|
||||
var headers_obj: *std.build.LibExeObjStep = b.addExecutable("vlq-bench", "src/sourcemap/vlq_bench.zig");
|
||||
defer headers_step.dependOn(&headers_obj.step);
|
||||
try configureObjectStep(b, headers_obj, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, headers_obj, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
headers_obj.addOptions("build_options", default_build_options.step(b));
|
||||
}
|
||||
|
||||
@@ -493,7 +456,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
const headers_step = b.step("tgz-obj", "Build tgz (object files)");
|
||||
var headers_obj: *std.build.LibExeObjStep = b.addObject("tgz", "misctools/tgz.zig");
|
||||
defer headers_step.dependOn(&headers_obj.step);
|
||||
try configureObjectStep(b, headers_obj, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, headers_obj, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
headers_obj.addOptions("build_options", default_build_options.step(b));
|
||||
}
|
||||
|
||||
@@ -511,7 +474,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
if (std.fs.path.dirname(test_bin)) |dir| headers_obj.setOutputDir(dir);
|
||||
}
|
||||
|
||||
try configureObjectStep(b, headers_obj, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, headers_obj, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
try linkObjectFiles(b, headers_obj, target);
|
||||
|
||||
{
|
||||
@@ -530,7 +493,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
|
||||
test_.setMainPkgPath(obj.main_pkg_path.?);
|
||||
test_.setTarget(target);
|
||||
try configureObjectStep(b, test_, target, obj.main_pkg_path.?);
|
||||
try configureObjectStep(b, test_, @TypeOf(target), target, obj.main_pkg_path.?);
|
||||
try linkObjectFiles(b, test_, target);
|
||||
test_.addOptions("build_options", default_build_options.step(b));
|
||||
|
||||
@@ -546,9 +509,12 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
headers_step.dependOn(&after.step);
|
||||
}
|
||||
}
|
||||
if (obj.emit_bin != .no_emit)
|
||||
obj.setOutputDir(output_dir);
|
||||
b.default_step.dependOn(obj_step);
|
||||
}
|
||||
|
||||
pub var original_make_fn: ?fn (step: *std.build.Step) anyerror!void = null;
|
||||
pub var original_make_fn: ?*const fn (step: *std.build.Step) anyerror!void = null;
|
||||
|
||||
// Due to limitations in std.build.Builder
|
||||
// we cannot use this with debugging
|
||||
@@ -593,13 +559,13 @@ pub fn linkObjectFiles(b: *std.build.Builder, obj: *std.build.LibExeObjStep, tar
|
||||
});
|
||||
|
||||
for (dirs_to_search.slice()) |deps_path| {
|
||||
var deps_dir = std.fs.cwd().openDir(deps_path, .{ .iterate = true }) catch continue;
|
||||
var deps_dir = std.fs.cwd().openIterableDir(deps_path, .{}) catch continue;
|
||||
var iterator = deps_dir.iterate();
|
||||
obj.addIncludeDir(deps_path);
|
||||
obj.addLibPath(deps_path);
|
||||
obj.addIncludePath(deps_path);
|
||||
obj.addLibraryPath(deps_path);
|
||||
|
||||
while (iterator.next() catch null) |entr| {
|
||||
const entry: std.fs.Dir.Entry = entr;
|
||||
const entry: std.fs.IterableDir.Entry = entr;
|
||||
if (files_we_care_about.get(entry.name)) |obj_name| {
|
||||
var has_added = try added.getOrPut(std.hash.Wyhash.hash(0, obj_name));
|
||||
if (!has_added.found_existing) {
|
||||
@@ -611,17 +577,20 @@ pub fn linkObjectFiles(b: *std.build.Builder, obj: *std.build.LibExeObjStep, tar
|
||||
}
|
||||
}
|
||||
|
||||
pub fn configureObjectStep(_: *std.build.Builder, obj: *std.build.LibExeObjStep, target: anytype, main_pkg_path: []const u8) !void {
|
||||
pub fn configureObjectStep(b: *std.build.Builder, obj: *std.build.LibExeObjStep, comptime Target: type, target: Target, main_pkg_path: []const u8) !void {
|
||||
obj.setMainPkgPath(main_pkg_path);
|
||||
|
||||
obj.setTarget(target);
|
||||
try addInternalPackages(obj, std.heap.page_allocator, target);
|
||||
try addInternalPackages(obj, std.heap.page_allocator, b.zig_exe, target);
|
||||
if (target.getOsTag() != .freestanding)
|
||||
addPicoHTTP(obj, false);
|
||||
|
||||
obj.strip = false;
|
||||
|
||||
obj.setOutputDir(output_dir);
|
||||
obj.setBuildMode(mode);
|
||||
obj.bundle_compiler_rt = true;
|
||||
|
||||
if (target.getOsTag() != .freestanding) obj.linkLibC();
|
||||
if (target.getOsTag() != .freestanding) obj.bundle_compiler_rt = true;
|
||||
|
||||
|
||||
11
bunfig.toml
Normal file
11
bunfig.toml
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
|
||||
|
||||
[test]
|
||||
# Large monorepos (like Bun) may want to specify the test directory more specifically
|
||||
# By default, `bun wiptest` scans every single folder recurisvely which, if you
|
||||
# have a gigantic submodule (like WebKit), it has to do lots of directory
|
||||
# traversals
|
||||
#
|
||||
# Instead, we can just make it scan only the test directory for Bun's runtime tests
|
||||
root = "test/bun.js"
|
||||
@@ -1,6 +1,5 @@
|
||||
#/usr/bin/env bash
|
||||
|
||||
|
||||
_file_arguments() {
|
||||
shopt -s extglob globstar
|
||||
local extensions="${1}";
|
||||
@@ -81,8 +80,9 @@ _subcommand_comp_reply() {
|
||||
_bun_completions() {
|
||||
declare -A GLOBAL_OPTIONS;
|
||||
declare -A PACKAGE_OPTIONS;
|
||||
declare -A PM_OPTIONS;
|
||||
|
||||
local SUBCOMMANDS="dev bun create run install add remove upgrade completions discord help init";
|
||||
local SUBCOMMANDS="dev bun create run install add remove upgrade completions discord help init pm x";
|
||||
|
||||
GLOBAL_OPTIONS[LONG_OPTIONS]="--use --cwd --bunfile --server-bunfile --config --disable-react-fast-refresh --disable-hmr --extension-order --jsx-factory --jsx-fragment --extension-order --jsx-factory --jsx-fragment --jsx-import-source --jsx-production --jsx-runtime --main-fields --no-summary --version --platform --public-dir --tsconfig-override --define --external --help --inject --loader --origin --port --dump-environment-variables --dump-limits --disable-bun-js";
|
||||
GLOBAL_OPTIONS[SHORT_OPTIONS]="-c -v -d -e -h -i -l -u -p";
|
||||
@@ -95,6 +95,9 @@ _bun_completions() {
|
||||
PACKAGE_OPTIONS[SHARED_OPTIONS_LONG]="--config --yarn --production --no-save --dry-run --lockfile --force --cache-dir --no-cache --silent --verbose --global --cwd --backend --link-native-bins --help";
|
||||
PACKAGE_OPTIONS[SHARED_OPTIONS_SHORT]="-c -y -p -f -g";
|
||||
|
||||
PM_OPTIONS[LONG_OPTIONS]="--config --yarn --production --no-save --dry-run --lockfile --force --cache-dir --no-cache --silent --verbose --no-progress --no-summary --no-verify --ignore-scripts --global --cwd --backend --link-native-bins --help"
|
||||
PM_OPTIONS[SHORT_OPTIONS]="-c -y -p -f -g"
|
||||
|
||||
local cur_word="${COMP_WORDS[${COMP_CWORD}]}";
|
||||
local prev="${COMP_WORDS[$(( COMP_CWORD - 1 ))]}";
|
||||
|
||||
@@ -150,6 +153,11 @@ _bun_completions() {
|
||||
COMPREPLY+=( $(compgen -W "--version --cwd --help --silent -v -h" -- "${cur_word}" ) );
|
||||
_read_scripts_in_package_json;
|
||||
return;;
|
||||
pm)
|
||||
_long_short_completion \
|
||||
"${PM_OPTIONS[LONG_OPTIONS]} ${PM_OPTIONS[SHORT_OPTIONS]}";
|
||||
COMPREPLY+=( $(compgen -W "bin ls cache hash hash-print hash-string" -- "${cur_word}") );
|
||||
return;;
|
||||
*)
|
||||
local replaced_script;
|
||||
_long_short_completion \
|
||||
|
||||
@@ -53,14 +53,17 @@ end
|
||||
set -l bun_install_boolean_flags yarn production optional development no-save dry-run force no-cache silent verbose global
|
||||
set -l bun_install_boolean_flags_descriptions "Write a yarn.lock file (yarn v1)" "Don't install devDependencies" "Add dependency to optionalDependencies" "Add dependency to devDependencies" "Don't install devDependencies" "Don't install anything" "Always request the latest versions from the registry & reinstall all dependenices" "Ignore manifest cache entirely" "Don't output anything" "Excessively verbose logging" "Use global folder"
|
||||
|
||||
set -l bun_builtin_cmds dev create help bun upgrade discord run install remove add init link unlink
|
||||
set -l bun_builtin_cmds_without_run dev create help bun upgrade discord install remove add init
|
||||
set -l bun_builtin_cmds_without_bun dev create help upgrade run discord install remove add init
|
||||
set -l bun_builtin_cmds_without_create dev help bun upgrade discord run install remove add init
|
||||
set -l bun_builtin_cmds_without_install create dev help bun upgrade discord run remove add init
|
||||
set -l bun_builtin_cmds_without_remove create dev help bun upgrade discord run install add init
|
||||
set -l bun_builtin_cmds_without_add create dev help bun upgrade discord run remove install init
|
||||
set -l bun_builtin_cmds_without_pm create dev help bun upgrade discord run init
|
||||
set -l bun_builtin_cmds dev create help bun upgrade discord run install remove add init link unlink pm x
|
||||
set -l bun_builtin_cmds_without_run dev create help bun upgrade discord install remove add init pm x
|
||||
set -l bun_builtin_cmds_without_bun dev create help upgrade run discord install remove add init pm x
|
||||
set -l bun_builtin_cmds_without_create dev help bun upgrade discord run install remove add init pm x
|
||||
set -l bun_builtin_cmds_without_install create dev help bun upgrade discord run remove add init pm x
|
||||
set -l bun_builtin_cmds_without_remove create dev help bun upgrade discord run install add init pm x
|
||||
set -l bun_builtin_cmds_without_add create dev help bun upgrade discord run remove install init pm x
|
||||
set -l bun_builtin_cmds_without_pm create dev help bun upgrade discord run init pm x
|
||||
|
||||
# clear
|
||||
complete -e -c bun
|
||||
|
||||
complete -c bun \
|
||||
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_run; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_use_subcommand" -a '(__fish__get_bun_scripts)' -d 'script'
|
||||
@@ -102,7 +105,7 @@ complete -c bun \
|
||||
-n "not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_use_subcommand" -a '--help' -d 'See all commands and flags' -x
|
||||
|
||||
complete -c bun \
|
||||
-n "not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_use_subcommand" -l "version" -s "v" -a '--version' -d 'bun\'s version' -x
|
||||
-n "not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_use_subcommand" -l "version" -s "v" -a '--version' -d 'Bun\'s version' -x
|
||||
complete -c bun \
|
||||
-n "not __fish_seen_subcommand_from $bun_builtin_cmds; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_use_subcommand" -a 'discord' -d 'Open bun\'s Discord server' -x
|
||||
|
||||
@@ -150,5 +153,11 @@ complete -c bun \
|
||||
|
||||
complete -c bun \
|
||||
-n "not __fish_seen_subcommand_from $bun_builtin_cmds_without_pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts); and __fish_seen_subcommand_from add;" -d 'History' -a '(__history_completions)'
|
||||
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) cache;" -a 'bin ls cache hash hash-print hash-string' -f
|
||||
|
||||
complete -c bun --no-files
|
||||
complete -c bun \
|
||||
-n "__fish_seen_subcommand_from pm; and __fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts);" -a 'rm' -f
|
||||
|
||||
complete -c bun -n "not __fish_seen_subcommand_from $bun_builtin_cmds (__fish__get_bun_bins) (__fish__get_bun_scripts)" -a "$bun_builtin_cmds" -f
|
||||
@@ -1,3 +1,4 @@
|
||||
#compdef bun
|
||||
_bun() {
|
||||
zstyle ':completion:*:*:bun:*' group-name ''
|
||||
zstyle ':completion:*:*:bun-grouped:*' group-name ''
|
||||
@@ -20,10 +21,11 @@ _bun() {
|
||||
local -a scripts_list
|
||||
IFS=$'\n' scripts_list=($(SHELL=zsh bun getcompletes i))
|
||||
scripts="scripts:scripts:(($scripts_list))"
|
||||
IFS=$'\n' files_list=($(SHELL=zsh bun getcompletes j))
|
||||
|
||||
main_commands=('add\:"Add a dependency to package.json" bun\:"Generate a bundle" create\:"Create a new project" dev\:"Start a dev server" help\:"Show command help" install\:"Install packages from package.json" remove\:"Remove a dependency from package.json" run\:"Run a script or package bin" upgrade\:"Upgrade to the latest version of bun"')
|
||||
main_commands=('add\:"Add a dependency to package.json" bun\:"Generate a bundle" create\:"Create a new project" dev\:"Start a dev server" help\:"Show command help" install\:"Install packages from package.json" x\:"Run a command from a local or remote NPM package" pm\:"Manage local packages" remove\:"Remove a dependency from package.json" run\:"Run a script or package bin" upgrade\:"Upgrade to the latest version of bun"')
|
||||
main_commands=($main_commands)
|
||||
_alternative "$scripts" "args:bun:(($main_commands))"
|
||||
_alternative "$scripts" "args:command:(($main_commands))" "files:files:(($files_list))"
|
||||
;;
|
||||
args)
|
||||
case $line[1] in
|
||||
@@ -261,7 +263,83 @@ _bun() {
|
||||
|
||||
;;
|
||||
|
||||
help)
|
||||
x)
|
||||
_arguments -s -C \
|
||||
'1: :->cmd' \
|
||||
'2: :->cmd2' \
|
||||
'*: :->args' &&
|
||||
ret=0
|
||||
;;
|
||||
pm)
|
||||
|
||||
pmargs=('-c[Load config (bunfig.toml)]'
|
||||
'--config[Load config (bunfig.toml)]'
|
||||
'-y[Write a yarn.lock file (yarn v1)]'
|
||||
'--yarn[Write a yarn.lock file (yarn v1)]'
|
||||
'-p[Do not install devDependencies]'
|
||||
'--production[Do not install devDependencies]'
|
||||
'--no-save[Do not save a lockfile]'
|
||||
'--dry-run[Do not install anything]'
|
||||
'--lockfile[Store & load a lockfile at a specific filepath]'
|
||||
'-f[Always request the latest versions from the registry & reinstall all dependencies]'
|
||||
'--force[Always request the latest versions from the registry & reinstall all dependencies]'
|
||||
'--cache-dir[Store & load cached data from a specific directory path]'
|
||||
'--no-cache[Ignore manifest cache entirely]'
|
||||
'--silent[Do not log anything]'
|
||||
'--verbose[Excessively verbose logging]'
|
||||
'--no-progress[Disable the progress bar]'
|
||||
'--no-summary[Do not print a summary]'
|
||||
'--no-verify[Skip verifying integrity of newly downloaded packages]'
|
||||
'--ignore-scripts[Skip lifecycle scripts in the package.json (dependency scripts are never run)]'
|
||||
'-g[Install globally]'
|
||||
'--global[Install globally]'
|
||||
'--cwd[Set a specific cwd]'
|
||||
'--backend[Platform-specific optimizations for installing dependencies. Possible values: "clonefile" (default), "hardlink", "symlink", "copyfile"]'
|
||||
'--link-native-bins[Link "bin" from a matching platform-specific "optionalDependencies" instead. Default: esbuild, turbo]'
|
||||
'--help[Print this help menu]'
|
||||
)
|
||||
|
||||
# ---- Command: help
|
||||
_arguments -s -C \
|
||||
'1: :->cmd' \
|
||||
'2: :->cmd2' \
|
||||
'*: :->args' &&
|
||||
ret=0
|
||||
|
||||
case $state in
|
||||
cmd2)
|
||||
_alternative 'args:cmd3:((bin ls cache hash hash-print hash-string))'
|
||||
;;
|
||||
|
||||
args)
|
||||
|
||||
case $line[2] in
|
||||
cache)
|
||||
|
||||
_arguments -s -C \
|
||||
'1: :->cmd' \
|
||||
'2: :->cmd2' \
|
||||
':::(rm)' \
|
||||
$pmargs &&
|
||||
ret=0
|
||||
;;
|
||||
*)
|
||||
|
||||
_arguments -s -C \
|
||||
'1: :->cmd' \
|
||||
'2: :->cmd2' \
|
||||
$pmargs &&
|
||||
ret=0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
esac
|
||||
;;
|
||||
|
||||
\
|
||||
\
|
||||
help)
|
||||
|
||||
# ---- Command: help
|
||||
_arguments -s -C \
|
||||
@@ -627,5 +705,8 @@ __bun_dynamic_comp() {
|
||||
return $comp
|
||||
}
|
||||
|
||||
autoload -U compinit && compinit
|
||||
if ! command -v compinit >/dev/null; then
|
||||
autoload -U compinit && compinit
|
||||
fi
|
||||
|
||||
compdef _bun bun
|
||||
|
||||
@@ -6,7 +6,7 @@ serve({
|
||||
|
||||
// If the URL is empty, display this file.
|
||||
if (pathname === "") {
|
||||
return new Response(file(import.meta.url));
|
||||
return new Response(file(import.meta.url.replace("file://", "")));
|
||||
}
|
||||
|
||||
return new Response(file(pathname));
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
import { SHA1, SHA256, SHA512, SHA384, SHA512_256, MD5, MD4, sha } from "bun";
|
||||
import {
|
||||
SHA1,
|
||||
SHA256,
|
||||
SHA512,
|
||||
SHA384,
|
||||
SHA512_256,
|
||||
MD5,
|
||||
MD4,
|
||||
RIPEMD160,
|
||||
sha,
|
||||
} from "bun";
|
||||
|
||||
const input = "Hello World";
|
||||
const [first, second] = input.split(" ");
|
||||
@@ -16,6 +26,7 @@ log("SHA256", SHA256.hash(input, "hex"));
|
||||
log("SHA384", SHA384.hash(input, "hex"));
|
||||
log("SHA512", SHA512.hash(input, "hex"));
|
||||
log("SHA512_256", SHA512_256.hash(input, "hex"));
|
||||
log("RIPEMD160", RIPEMD160.hash(input, "hex"));
|
||||
|
||||
console.log("");
|
||||
console.log("---- Chunked ----");
|
||||
@@ -23,7 +34,7 @@ console.log("");
|
||||
|
||||
// You can also do updates in chunks:
|
||||
// const hash = new Hash();
|
||||
for (let Hash of [SHA1, SHA256, SHA384, SHA512, SHA512_256]) {
|
||||
for (let Hash of [SHA1, SHA256, SHA384, SHA512, SHA512_256, RIPEMD160]) {
|
||||
const hash = new Hash();
|
||||
hash.update(first);
|
||||
hash.update(" " + second);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const std = @import("std");
|
||||
|
||||
const path_handler = @import("../src/resolver/resolve_path.zig");
|
||||
const bun = @import("../src/global.zig");
|
||||
const bun = @import("bun");
|
||||
const string = bun.string;
|
||||
const Output = bun.Output;
|
||||
const Global = bun.Global;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const std = @import("std");
|
||||
const bun = @import("../src/global.zig");
|
||||
const bun = @import("bun");
|
||||
const string = bun.string;
|
||||
const Output = bun.Output;
|
||||
const Global = bun.Global;
|
||||
@@ -9,16 +9,18 @@ const MutableString = bun.MutableString;
|
||||
const stringZ = bun.stringZ;
|
||||
const default_allocator = bun.default_allocator;
|
||||
const C = bun.C;
|
||||
const clap = @import("../src/deps/zig-clap/clap.zig");
|
||||
pub usingnamespace @import("bun");
|
||||
|
||||
const clap = bun.clap;
|
||||
|
||||
const URL = @import("../src/url.zig").URL;
|
||||
const Headers = @import("http").Headers;
|
||||
const Headers = @import("bun").HTTP.Headers;
|
||||
const Method = @import("../src/http/method.zig").Method;
|
||||
const ColonListType = @import("../src/cli/colon_list_type.zig").ColonListType;
|
||||
const HeadersTuple = ColonListType(string, noop_resolver);
|
||||
const path_handler = @import("../src/resolver/resolve_path.zig");
|
||||
const HTTPThread = @import("http").HTTPThread;
|
||||
const HTTP = @import("http");
|
||||
const HTTPThread = @import("bun").HTTP.HTTPThread;
|
||||
const HTTP = @import("bun").HTTP;
|
||||
fn noop_resolver(in: string) !string {
|
||||
return in;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,17 @@ input = keep + input.slice(first_extern_line, last_extern_fn_line);
|
||||
input = input.replaceAll("*WebCore__", "*bindings.");
|
||||
input = input.replaceAll("*JSC__", "*bindings.");
|
||||
input = input.replaceAll("[*c] JSC__", "[*c]bindings.");
|
||||
input = input.replaceAll("[*c]JSC__", "[*c]bindings.");
|
||||
input = input.replaceAll(
|
||||
"[*c]bindings.JSGlobalObject",
|
||||
"*bindings.JSGlobalObject",
|
||||
);
|
||||
input = input.replaceAll("[*c]bindings.JSPromise", "?*bindings.JSPromise");
|
||||
input = input.replaceAll(
|
||||
"[*c]const bindings.JSPromise",
|
||||
"?*const bindings.JSPromise",
|
||||
);
|
||||
|
||||
input = input.replaceAll("[*c] const JSC__", "[*c]const bindings.");
|
||||
input = input.replaceAll(
|
||||
"[*c]Inspector__ScriptArguments",
|
||||
@@ -43,6 +54,10 @@ input = input
|
||||
.replaceAll("VirtualMachine", "bindings.VirtualMachine")
|
||||
.replaceAll("bindings.bindings.VirtualMachine", "bindings.VirtualMachine");
|
||||
|
||||
input = input.replaceAll("?*JSC__JSGlobalObject", "*bindings.JSGlobalObject");
|
||||
input = input.replaceAll("?*bindings.CallFrame", "*bindings.CallFrame");
|
||||
input = input.replaceAll("[*c]bindings.VM", "*bindings.VM");
|
||||
|
||||
const hardcode = {
|
||||
"[*c][*c]JSC__Exception": "*?*JSC__Exception ",
|
||||
"[*c]?*anyopaque": "[*c]*anyopaque",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const std = @import("std");
|
||||
const bun = @import("../src/global.zig");
|
||||
const bun = @import("bun");
|
||||
const string = bun.string;
|
||||
const Output = bun.Output;
|
||||
const Global = bun.Global;
|
||||
@@ -177,7 +177,7 @@ pub const Arguments = struct {
|
||||
}
|
||||
};
|
||||
|
||||
const HTTP = @import("http");
|
||||
const HTTP = @import("bun").HTTP;
|
||||
const NetworkThread = HTTP.NetworkThread;
|
||||
|
||||
var stdout_: std.fs.File = undefined;
|
||||
@@ -252,8 +252,8 @@ pub fn main() anyerror!void {
|
||||
fail_count += 1;
|
||||
}
|
||||
|
||||
max_duration = @maximum(max_duration, http.elapsed);
|
||||
min_duration = @minimum(min_duration, http.elapsed);
|
||||
max_duration = @max(max_duration, http.elapsed);
|
||||
min_duration = @min(min_duration, http.elapsed);
|
||||
|
||||
switch (resp.status_code) {
|
||||
200, 202, 302 => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// most of this file is copy pasted from other files in misctools
|
||||
const std = @import("std");
|
||||
const bun = @import("../src/global.zig");
|
||||
const bun = @import("bun");
|
||||
const string = bun.string;
|
||||
const Output = bun.Output;
|
||||
const Global = bun.Global;
|
||||
@@ -11,16 +11,16 @@ const stringZ = bun.stringZ;
|
||||
const default_allocator = bun.default_allocator;
|
||||
const C = bun.C;
|
||||
const clap = @import("../src/deps/zig-clap/clap.zig");
|
||||
const AsyncIO = @import("io");
|
||||
const AsyncIO = @import("bun").AsyncIO;
|
||||
|
||||
const URL = @import("../src/url.zig").URL;
|
||||
const Headers = @import("http").Headers;
|
||||
const Headers = @import("bun").HTTP.Headers;
|
||||
const Method = @import("../src/http/method.zig").Method;
|
||||
const ColonListType = @import("../src/cli/colon_list_type.zig").ColonListType;
|
||||
const HeadersTuple = ColonListType(string, noop_resolver);
|
||||
const path_handler = @import("../src/resolver/resolve_path.zig");
|
||||
const NetworkThread = @import("http").NetworkThread;
|
||||
const HTTP = @import("http");
|
||||
const NetworkThread = @import("bun").HTTP.NetworkThread;
|
||||
const HTTP = @import("bun").HTTP;
|
||||
fn noop_resolver(in: string) !string {
|
||||
return in;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const std = @import("std");
|
||||
|
||||
const path_handler = @import("../src/resolver/resolve_path.zig");
|
||||
const bun = @import("../src/global.zig");
|
||||
const bun = @import("bun");
|
||||
const string = bun.string;
|
||||
const Output = bun.Output;
|
||||
const Global = bun.Global;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const std = @import("std");
|
||||
|
||||
const path_handler = @import("../src/resolver/resolve_path.zig");
|
||||
const bun = @import("../src/global.zig");
|
||||
const bun = @import("bun");
|
||||
const string = bun.string;
|
||||
const Output = bun.Output;
|
||||
const Global = bun.Global;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const std = @import("std");
|
||||
|
||||
const path_handler = @import("../src/resolver/resolve_path.zig");
|
||||
const bun = @import("../src/global.zig");
|
||||
const bun = @import("bun");
|
||||
const string = bun.string;
|
||||
const Output = bun.Output;
|
||||
const Global = bun.Global;
|
||||
|
||||
22
package.json
22
package.json
@@ -2,30 +2,30 @@
|
||||
"dependencies": {
|
||||
"express": "^4.18.2",
|
||||
"mitata": "^0.1.3",
|
||||
"peechy": "0.4.32",
|
||||
"peechy": "latest",
|
||||
"react": "next",
|
||||
"react-dom": "next"
|
||||
"react-dom": "next",
|
||||
"eslint": "^8.20.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"prettier": "^2.4.1",
|
||||
"svelte": "^3.52.0",
|
||||
"typescript": "latest"
|
||||
},
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build-runtime": "esbuild --target=esnext --bundle src/runtime/index.ts --format=iife --platform=browser --global-name=BUN_RUNTIME > src/runtime.out.js; cat src/runtime.footer.js >> src/runtime.out.js",
|
||||
"build-fallback": "esbuild --target=esnext --bundle src/fallback.ts --format=iife --platform=browser --minify > src/fallback.out.js",
|
||||
"postinstall": "bash .scripts/postinstall.sh",
|
||||
"typecheck": "tsc",
|
||||
"fmt": "prettier --write './**/*.{ts,tsx,js,jsx}'",
|
||||
"lint": "eslint './**/*.d.ts'",
|
||||
"lint:fix": "eslint './**/*.d.ts' --fix"
|
||||
"lint": "eslint './**/*.d.ts' --cache",
|
||||
"lint:fix": "eslint './**/*.d.ts' --cache --fix"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react": "^18.0.25",
|
||||
"@typescript-eslint/eslint-plugin": "^5.31.0",
|
||||
"@typescript-eslint/parser": "^5.31.0",
|
||||
"eslint": "^8.20.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"he": "^1.2.0",
|
||||
"html-entities": "^2.3.3",
|
||||
"prettier": "^2.4.1",
|
||||
"svelte": "^3.52.0",
|
||||
"typescript": "latest"
|
||||
"bun-webkit": "latest"
|
||||
},
|
||||
"version": "0.0.0"
|
||||
}
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
import { which } from "bun";
|
||||
|
||||
const symbolizerPath = ["llvm-symbolizer-13", "llvm-symbolizer"].find((a) =>
|
||||
which(a),
|
||||
);
|
||||
|
||||
if (!symbolizerPath) {
|
||||
throw new Error("llvm-symbolizer not found in $PATH");
|
||||
}
|
||||
|
||||
export const symbolizer = symbolizerPath;
|
||||
|
||||
function readCrashReport(text: string) {
|
||||
const lines = text
|
||||
.split("\n")
|
||||
.map((a) => a.trim())
|
||||
.filter((a) => a.length > 0);
|
||||
|
||||
const metaOffset = lines.findIndex((a) => a.includes(" bun meta "));
|
||||
let lastMetaLine = metaOffset + 1;
|
||||
for (; lastMetaLine < lines.length; lastMetaLine++) {
|
||||
const line = lines[lastMetaLine];
|
||||
if (line.includes(" bun meta ")) break;
|
||||
}
|
||||
|
||||
const meta = lines.slice(metaOffset, lastMetaLine);
|
||||
console.log(metaOffset, lastMetaLine);
|
||||
const version = /v(\d+\.\d+\.\d+)/.exec(meta[0])?.[1];
|
||||
var stack = lines
|
||||
.slice(lastMetaLine + 1)
|
||||
.filter((a) => a.length > 0 && !a.includes("ask for"));
|
||||
|
||||
return { version, stack };
|
||||
}
|
||||
|
||||
console.log(
|
||||
readCrashReport(
|
||||
await Bun.file(
|
||||
"/Users/jarred/.bun/.bun-crash/v0.2.3-1668157348119.crash",
|
||||
).text(),
|
||||
),
|
||||
);
|
||||
10
packages/bun-error/readme.md
Normal file
10
packages/bun-error/readme.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# bun-error
|
||||
|
||||
<img width="687" alt="image" src="https://user-images.githubusercontent.com/709451/162382958-23614e8f-239c-4ba6-be75-b76ceef8227c.png">
|
||||
|
||||
`bun-error` is a frontend component for rendering error messages and stack traces from Bun. It's used in:
|
||||
|
||||
- `bun dev`
|
||||
- `Bun.serve`
|
||||
|
||||
It is heavily tied to the implementation details of Bun, and is not intended to be used outside of Bun.
|
||||
43
packages/bun-landing/.gitignore
vendored
43
packages/bun-landing/.gitignore
vendored
@@ -1,43 +0,0 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
next-env.d.ts
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
**/*.trace
|
||||
**/*.zip
|
||||
**/*.tar.gz
|
||||
**/*.tgz
|
||||
**/*.log
|
||||
package-lock.json
|
||||
**/*.bun
|
||||
@@ -1,25 +0,0 @@
|
||||
# bun.sh
|
||||
|
||||
This is the landing page for the bun.sh site and documentation.
|
||||
|
||||
## Running Locally
|
||||
|
||||
Install dependencies
|
||||
|
||||
```bash
|
||||
bun install
|
||||
```
|
||||
|
||||
Run the development server:
|
||||
|
||||
```bash
|
||||
bun dev
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||||
|
||||
## Building
|
||||
|
||||
```bash
|
||||
bun run build
|
||||
```
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
framework = "next"
|
||||
@@ -1,15 +0,0 @@
|
||||
import * as shiki from "shiki";
|
||||
|
||||
// because we don't want to wait for it to reload everytime this page reloads
|
||||
globalThis._highlighter ||= await shiki.getHighlighter({
|
||||
theme: "dracula",
|
||||
});
|
||||
|
||||
const highlighter = globalThis._highlighter as shiki.Highlighter;
|
||||
|
||||
export default function CodeBlock({ children, lang = "js" }) {
|
||||
const html = highlighter.codeToHtml(children.trim(), { lang });
|
||||
return (
|
||||
<div className="CodeBlock" dangerouslySetInnerHTML={{ __html: html }} />
|
||||
);
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
import Head from "next/head";
|
||||
import { dataURI } from "macro:./dataURI";
|
||||
|
||||
export default function Layout({ children }) {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<meta charSet="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Bun is a fast all-in-one JavaScript runtime"
|
||||
/>
|
||||
<title>Bun is a fast all-in-one JavaScript runtime</title>
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Bundle, transpile, install and run JavaScript & TypeScript
|
||||
projects – all in Bun. Bun is a new JavaScript runtime with
|
||||
a native bundler, transpiler, task runner and npm client built-in.`}
|
||||
/>
|
||||
<meta name="og:locale" content="en_US" />
|
||||
<meta name="twitter:site" content="@jarredsumner" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta property="og:image" content="https://bun.sh/share.png" />
|
||||
<meta
|
||||
name="description"
|
||||
content={`Bundle, transpile, install and run JavaScript & TypeScript
|
||||
projects – all in Bun. Bun is a new JavaScript runtime with
|
||||
a native bundler, transpiler, task runner and npm client built-in.`}
|
||||
/>
|
||||
<meta name="theme-color" content="#fbf0df" />
|
||||
<link rel="manifest" href="manifest.json" />
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="256x256"
|
||||
href="/logo-square.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="32x32"
|
||||
href="/logo-square@32px.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="16x16"
|
||||
href="/logo-square@16px.png"
|
||||
/>
|
||||
</Head>
|
||||
<body>
|
||||
<div id="header-wrap">
|
||||
<header>
|
||||
<a href="/" id="logo-link" aria-label="home">
|
||||
<img
|
||||
height="61px"
|
||||
src={dataURI("../public/logo.svg", "components/Layout.tsx")}
|
||||
alt="Bun logo"
|
||||
id="logo"
|
||||
/>
|
||||
|
||||
<img
|
||||
alt="Bun"
|
||||
id="logo-text"
|
||||
height="31.65px"
|
||||
src={dataURI("../public/Bun@2x.png", "components/Layout.tsx")}
|
||||
/>
|
||||
</a>
|
||||
|
||||
<nav className="Navigation">
|
||||
<ul>
|
||||
<li>
|
||||
<a
|
||||
className="NavText"
|
||||
href="https://github.com/oven-sh/bun#Reference"
|
||||
>
|
||||
Docs
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a className="NavText" href="https://bun.sh/discord">
|
||||
Discord
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a className="NavText" href="https://github.com/oven-sh/bun">
|
||||
GitHub
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
</div>
|
||||
{children}
|
||||
</body>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
import { readFileSync } from "fs";
|
||||
import { resolve } from "path";
|
||||
|
||||
export function dataURI(expr) {
|
||||
const [pathNode, relativeNode] = expr.arguments;
|
||||
const path = pathNode.toString();
|
||||
const relative = relativeNode.toString();
|
||||
try {
|
||||
const toLoad = resolve(process.cwd(), relative, "../", path);
|
||||
const data = readFileSync(toLoad);
|
||||
|
||||
return `data:${Bun.file(toLoad).type};base64, ${btoa(
|
||||
String.fromCharCode(...new Uint8Array(data.buffer)),
|
||||
)}`;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
module.exports = {
|
||||
reactStrictMode: true,
|
||||
typescript: {
|
||||
ignoreBuildErrors: true,
|
||||
},
|
||||
webpack: (config) => {
|
||||
// support shiki top level await
|
||||
config.experiments = { ...config.experiments, ...{ topLevelAwait: true } };
|
||||
return config;
|
||||
},
|
||||
};
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"scripts": {
|
||||
"dev": "next",
|
||||
"build": "next build",
|
||||
"start": "next start"
|
||||
},
|
||||
"dependencies": {
|
||||
"next": "12.2.3",
|
||||
"react": "^18",
|
||||
"react-dom": "^18",
|
||||
"react-is": "^17.0.2",
|
||||
"shiki": "0.10.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react": "^18",
|
||||
"@types/node": "latest",
|
||||
"bun-framework-next": "^12",
|
||||
"typescript": "latest"
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user