bellard / quickjs

Public repository of the QuickJS Javascript Engine.
https://bellard.org/quickjs
Other
8.24k stars 860 forks source link

Building ”modern” tsc #173

Open helander opened 1 year ago

helander commented 1 year ago

Have anyone compiled a ”modern” version of tsc (typescript compiler) with qjsc? The patch file available in the tar mentioned in the documentation does not ”work” with the ”current” typescript package.

zeromake commented 1 year ago

tsc

tsc-5.0.3.patch

On macosx

> curl -OL https://bellard.org/quickjs/quickjs-2021-03-27.tar.xz
> tar xf quickjs-2021-03-27.tar.xz && cd quickjs-2021-03-27
> make
> cd ..
> curl -OL https://globalcdn.nuget.org/packages/microsoft.typescript.msbuild.5.0.3.nupkg
> unzip microsoft.typescript.msbuild.5.0.3.nupkg -d tsc
> cd tsc/tools/tsc
> curl -OL https://github.com/bellard/quickjs/files/11146444/tsc-5.0.3.patch
> patch -p0 < tsc-5.0.3.patch && cd -
> ./quickjs-2021-03-27/qjsc -o tsc/tools/tsc/tsc tsc/tools/tsc/tsc.js
> echo 'console.log("hello");' > 1.ts
> ./tsc/tools/tsc/tsc 1.ts
> cat 1.js
console.log("hello");
helander commented 1 year ago

Thank you 😃

yne commented 1 month ago

We could also add to the returned getQuickJSSystem object the following methods:

    return {
      //...
      getWidthOfTerminal() {
        const [width, _height] = os.ttyGetWinSize(1);
        return width;
      },
      writeOutputIsTTY() {
        return os.isatty(1);
      },
      // readFile: function (path, _encoding) { ...
    }

to get the same output color/layout as node

Also, readFile and writeFile shall not fail silently in order for tsc to create intermediate folder when outputing file

      readFile: function (path, _encoding) {
        const f = std.open(path, "r");
        if (!f)return void 0;
        const ret = f.readAsString();
        f.close();
        return ret;
      },
      writeFile: function (path, data, writeByteOrderMark) {
        const f = std.open(path, "w+");
        if (!f)
          throw new Error(`Unable to write ${path}`);
        f.puts(data);
        f.close();
      },

I'll try to upstream the patch so (at least) the qjs --std tsc.js ... could work out of the box

@zeromake is the removal of "use strict"; to be in sloppy mode necessary ?