Comments (13)
Pinging @ugexe : looks like some uses of mkdir don't have their result sunk, which causes noise when they failed and the Failure gets DESTROYed unhandled.
That path suggests it is something in CURI -- when its looking for some module it can attempt to create that short directory.
from rakudo-pkg.
@niner I suspect nfpm prunes empty directories (need to look at that code). For now I added the directories to the config linked above.
Tag https://github.com/nxadm/rakudo-pkg/tree/v2021.02.1-03 is building and releasing the packages as we speak.
Thank to everyone that looked into this.
from rakudo-pkg.
Pinging @ugexe : looks like some uses of mkdir
don't have their result sunk, which causes noise when they failed and the Failure
gets DESTROYed unhandled.
from rakudo-pkg.
Hi @Altai-man,
I took a fresh Ubuntu image and everything seems to work as intended:
~$ podman run -ti ubuntu
root@a18987facde0:/# apt-get update && apt-get -y install curl git
[...]
root@a18987facde0:/# curl -1sLf 'https://dl.cloudsmith.io/public/nxadm-pkgs/rakudo-pkg/setup.deb.sh' | bash
Executing the setup script for the 'nxadm-pkgs/rakudo-pkg' repository ...
OK: Checking for required executable 'curl' ...
OK: Checking for required executable 'apt-get' ...
OK: Detecting your OS distribution and release using system methods ...
^^^^: ... Detected/provided for your OS/distribution, version and architecture:
>>>>:
>>>>: ... distro=ubuntu version=20.04 codename=focal arch=x86_64
>>>>:
NOPE: Checking for apt dependency 'apt-transport-https' ...
OK: Updating apt repository metadata cache ...
OK: Attempting to install 'apt-transport-https' ...
OK: Checking for apt dependency 'ca-certificates' ...
NOPE: Checking for apt dependency 'gnupg' ...
OK: Attempting to install 'gnupg' ...
OK: Importing 'nxadm-pkgs/rakudo-pkg' repository GPG key into apt ...
OK: Checking if upstream install config is OK ...
OK: Installing 'nxadm-pkgs/rakudo-pkg' repository via apt ...
OK: Updating apt repository metadata cache ...
OK: The repository has been installed successfully - You're ready to rock!
root@a18987facde0:/# apt-get update && apt-get -y install rakudo-pkg
[...]
root@a18987facde0:/# /opt/rakudo-pkg/bin/install-zef
===> Testing: zef:ver<0.11.4>:auth<github:ugexe>:api<0>
===> Testing [OK] for zef:ver<0.11.4>:auth<github:ugexe>:api<0>
===> Installing: zef:ver<0.11.4>:auth<github:ugexe>:api<0>
1 bin/ script [zef] installed to:
/root/.raku/bin
Don't forget to add '~/.raku/bin' to your PATH,
e.g. by adding this to .profile:
export PATH=~/.raku/bin:$PATH
root@a18987facde0:/# source /etc/profile.d/rakudo-pkg.sh
root@a18987facde0:/# export PATH=~/.raku/bin:$PATH
root@a18987facde0:/# zef install SuperMAIN
===> Searching for: SuperMAIN
===> Testing: SuperMAIN:ver<0.1.4>:auth<github:nxadm>:api<1>
===> Testing [OK] for SuperMAIN:ver<0.1.4>:auth<github:nxadm>:api<1>
===> Installing: SuperMAIN:ver<0.1.4>:auth<github:nxadm>:api<1>
Now running a container as a user (will post below).
from rakudo-pkg.
For a user it seems we get a lot of output garbage, but zef does work as intended. @lizmat, can you help with this?
~$ podman run -ti ubuntu
root@a18987facde0:/# apt-get update && apt-get install curl git
[...]
root@a18987facde0:/# curl -1sLf 'https://dl.cloudsmith.io/public/nxadm-pkgs/rakudo-pkg/setup.deb.sh' | bash
Executing the setup script for the 'nxadm-pkgs/rakudo-pkg' repository ...
OK: Checking for required executable 'curl' ...
OK: Checking for required executable 'apt-get' ...
OK: Detecting your OS distribution and release using system methods ...
^^^^: ... Detected/provided for your OS/distribution, version and architecture:
>>>>:
>>>>: ... distro=ubuntu version=20.04 codename=focal arch=x86_64
>>>>:
NOPE: Checking for apt dependency 'apt-transport-https' ...
OK: Updating apt repository metadata cache ...
OK: Attempting to install 'apt-transport-https' ...
OK: Checking for apt dependency 'ca-certificates' ...
NOPE: Checking for apt dependency 'gnupg' ...
OK: Attempting to install 'gnupg' ...
OK: Importing 'nxadm-pkgs/rakudo-pkg' repository GPG key into apt ...
OK: Checking if upstream install config is OK ...
OK: Installing 'nxadm-pkgs/rakudo-pkg' repository via apt ...
OK: Updating apt repository metadata cache ...
OK: The repository has been installed successfully - You're ready to rock!
root@a18987facde0:/# apt-get update && apt-get install -y rakudo-pkg
[...]
# useradd -m user
root@0bf7504fa7f2:/# su - user
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/rakudo-pkg/bin:/opt/rakudo-pkg/share/perl6/bin
$ install-zef
WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
Failed to create directory '/opt/rakudo-pkg/share/perl6/vendor/short' with mode '0o777': Failed to mkdir: Permission denied
in method probe at bin/zef line 71
in block at bin/zef line 135
in code at bin/zef line 121
in submethod TWEAK at bin/zef line 70
in submethod TWEAK at bin/zef line 326
in sub get-client at bin/zef line 1173
in sub MAIN at bin/zef line 420
in sub MAIN at bin/zef line 314
in block <unit> at bin/zef line 3
WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
in method probe at bin/zef line 71
in block at bin/zef line 135
in code at bin/zef line 121
in submethod TWEAK at bin/zef line 70
in submethod TWEAK at bin/zef line 326
in sub get-client at bin/zef line 1173
in sub MAIN at bin/zef line 420
in sub MAIN at bin/zef line 314
in block <unit> at bin/zef line 3
===> Testing: zef:ver<0.11.4>:auth<github:ugexe>:api<0>
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/vendor/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/vendor/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/vendor/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in method probe at t/distribution-depends-parsing.t line 71
[zef] in block at t/distribution-depends-parsing.t line 135
[zef] in code at t/distribution-depends-parsing.t line 121
[zef] in submethod TWEAK at t/distribution-depends-parsing.t line 70
[zef] in submethod TWEAK at t/distribution-depends-parsing.t line 326
[zef] in block at t/distribution-depends-parsing.t line 241
[zef] in block <unit> at t/distribution-depends-parsing.t line 217
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in method probe at t/distribution-depends-parsing.t line 71
[zef] in block at t/distribution-depends-parsing.t line 135
[zef] in code at t/distribution-depends-parsing.t line 121
[zef] in submethod TWEAK at t/distribution-depends-parsing.t line 70
[zef] in submethod TWEAK at t/distribution-depends-parsing.t line 326
[zef] in block at t/distribution-depends-parsing.t line 241
[zef] in block <unit> at t/distribution-depends-parsing.t line 217
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/vendor/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/vendor/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/vendor/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[zef] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[zef] Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
[zef] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
===> Testing [OK] for zef:ver<0.11.4>:auth<github:ugexe>:api<0>
===> Installing: zef:ver<0.11.4>:auth<github:ugexe>:api<0>
1 bin/ script [zef] installed to:
/home/user/.raku/bin
Don't forget to add '~/.raku/bin' to your PATH,
e.g. by adding this to .profile:
export PATH=~/.raku/bin:$PATH
$ export PATH=~/.raku/bin:$PATH
$ zef install SuperMAIN
WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
in sub MAIN at /home/user/.raku/bin/zef line 3
in block <unit> at /home/user/.raku/bin/zef line 1
WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
in method probe at /home/user/.raku/sources/11BDDC453B285D4130CAFD9207D29683DB0F17B4 (Zef::Service::TAP) line 71
in block at /home/user/.raku/sources/090A6251445589FF701C6B3A7BDA6A65220083E5 (Zef) line 135
in code at /home/user/.raku/sources/090A6251445589FF701C6B3A7BDA6A65220083E5 (Zef) line 121
in submethod TWEAK at /home/user/.raku/sources/45485E6476D6844C9AE3ADC6822C3B049847EADB (Zef::Test) line 70
in submethod TWEAK at /home/user/.raku/sources/F5DFB923A650F411954049650243A4522BD8EB91 (Zef::Client) line 326
in sub get-client at /home/user/.raku/sources/264923860923B00F9CAE7601D27C4577C65C9E7F (Zef::CLI) line 1173
in sub MAIN at /home/user/.raku/sources/264923860923B00F9CAE7601D27C4577C65C9E7F (Zef::CLI) line 420
in sub MAIN at /home/user/.raku/sources/264923860923B00F9CAE7601D27C4577C65C9E7F (Zef::CLI) line 314
in block <unit> at /home/user/.raku/resources/E769B9DC6B48B49532B47D034A56EA3C2FCA153B line 3
in sub MAIN at /home/user/.raku/bin/zef line 3
in block <unit> at /home/user/.raku/bin/zef line 1
===> Searching for: SuperMAIN
===> Updating fez mirror: http://360.zef.pm/
===> Updating cpan mirror: https://raw.githubusercontent.com/ugexe/Perl6-ecosystems/master/cpan1.json
===> Updating p6c mirror: https://raw.githubusercontent.com/ugexe/Perl6-ecosystems/master/p6c1.json
===> Updated fez mirror: http://360.zef.pm/
===> Updated p6c mirror: https://raw.githubusercontent.com/ugexe/Perl6-ecosystems/master/p6c1.json
===> Updated cpan mirror: https://raw.githubusercontent.com/ugexe/Perl6-ecosystems/master/cpan1.json
===> Testing: SuperMAIN:ver<0.1.4>:auth<github:nxadm>:api<1>
[SuperMAIN] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[SuperMAIN] Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
[SuperMAIN] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[SuperMAIN] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[SuperMAIN] Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
[SuperMAIN] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[SuperMAIN] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[SuperMAIN] Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
[SuperMAIN] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
[SuperMAIN] WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
[SuperMAIN] Failed to create directory '/opt/rakudo-pkg/share/perl6/site/short' with mode '0o777': Failed to mkdir: Permission denied
[SuperMAIN] in any statement_control at /opt/rakudo-pkg/bin/../share/perl6/lib/Perl6/Grammar.moarvm line 1
===> Testing [OK] for SuperMAIN:ver<0.1.4>:auth<github:nxadm>:api<1>
===> Installing: SuperMAIN:ver<0.1.4>:auth<github:nxadm>:api<1>
$ raku -MSuperMAIN -e 'say "foo"'
foo
$ raku -MSuperMAIN2 -e 'say "foo"'
===SORRY!=== Error while compiling -e
Could not find SuperMAIN2 in:
inst#/home/user/.raku
inst#/opt/rakudo-pkg/share/perl6/site
inst#/opt/rakudo-pkg/share/perl6/vendor
inst#/opt/rakudo-pkg/share/perl6/core
ap#
nqp#
perl5#
at -e:1
from rakudo-pkg.
To be complete, zef is installed like this:
/opt/rakudo-pkg/bin/raku -I. bin/zef --install-to=home --force-install install .
from rakudo-pkg.
Ok, then maybe we need to escalate this into a rakudo issue.
from rakudo-pkg.
While it's indeed a rakudo issue, there also seems to be an issue with those packages. Why do /opt/rakudo-pkg/share/perl6/vendor/short
and /opt/rakudo-pkg/share/perl6/site/short
not exist in the first place?
The proper openSUSE package for example contains among others, these directories:
/usr/share/perl6/site
/usr/share/perl6/site/bin
/usr/share/perl6/site/dist
/usr/share/perl6/site/precomp
/usr/share/perl6/site/resources
/usr/share/perl6/site/short
/usr/share/perl6/site/sources
/usr/share/perl6/site/version
/usr/share/perl6/vendor
/usr/share/perl6/vendor/bin
/usr/share/perl6/vendor/dist
/usr/share/perl6/vendor/precomp
/usr/share/perl6/vendor/resources
/usr/share/perl6/vendor/short
/usr/share/perl6/vendor/sources
/usr/share/perl6/vendor/version
from rakudo-pkg.
While it's indeed a rakudo issue, there also seems to be an issue with those packages. Why do
/opt/rakudo-pkg/share/perl6/vendor/short and /opt/rakudo-pkg/share/perl6/site/short not exist in the first place?
I am debugging, but probably because the rakudo build does not create them.
from rakudo-pkg.
Is it a regression?
from rakudo-pkg.
I added the empty directories on the packages because they are not built by the Rakudo config/make/make install process:
https://github.com/nxadm/rakudo-pkg/blob/master/config/nfpm.yaml#L147
I will release a package update with the 2 empty directories added:
~$ podman run -ti -v $(pwd)/Downloads:/mnt ubuntu
root@7e7e389a51d0:/# apt-get update && apt-get -y install curl git
[...]
root@7e7e389a51d0:/# dpkg -i /mnt/rakudo-pkg-Ubuntu20.04_2021.02.1-02_amd64.deb
Selecting previously unselected package rakudo-pkg.
(Reading database ... 4121 files and directories currently installed.)
Preparing to unpack .../rakudo-pkg-Ubuntu20.04_2021.02.1-02_amd64.deb ...
Unpacking rakudo-pkg (2021.2.1-02) ...
Setting up rakudo-pkg (2021.2.1-02) ...
root@7e7e389a51d0:/# su - user^C
root@7e7e389a51d0:/# useradd -m user
root@7e7e389a51d0:/# su - user
$ install-zef
===> Testing: zef:ver<0.11.4>:auth<github:ugexe>:api<0>
===> Testing [OK] for zef:ver<0.11.4>:auth<github:ugexe>:api<0>
===> Installing: zef:ver<0.11.4>:auth<github:ugexe>:api<0>
1 bin/ script [zef] installed to:
/home/user/.raku/bin
Don't forget to add '~/.raku/bin' to your PATH,
e.g. by adding this to .profile:
export PATH=~/.raku/bin:$PATH
$ .raku/bin/zef install SuperMAIN
===> Searching for: SuperMAIN
===> Updating fez mirror: http://360.zef.pm/
===> Updating cpan mirror: https://raw.githubusercontent.com/ugexe/Perl6-ecosystems/master/cpan1.json
===> Updating p6c mirror: https://raw.githubusercontent.com/ugexe/Perl6-ecosystems/master/p6c1.json
===> Updated fez mirror: http://360.zef.pm/
===> Updated p6c mirror: https://raw.githubusercontent.com/ugexe/Perl6-ecosystems/master/p6c1.json
===> Updated cpan mirror: https://raw.githubusercontent.com/ugexe/Perl6-ecosystems/master/cpan1.json
===> Testing: SuperMAIN:ver<0.1.4>:auth<github:nxadm>:api<1>
===> Testing [OK] for SuperMAIN:ver<0.1.4>:auth<github:nxadm>:api<1>
===> Installing: SuperMAIN:ver<0.1.4>:auth<github:nxadm>:api<1>
from rakudo-pkg.
I added the empty directories on the packages because they are not built by
the Rakudo config/make/make install process:
But they are?
make install is depending on m-install:
https://github.com/rakudo/rakudo/blob/master/tools/templates/Makefile.in#L9
which is depending on m-install-post:
https://github.com/rakudo/rakudo/blob/master/tools/templates/Makefile-backend-common.in#L238
which calls upgrade-repository.raku for core, vendor and site:
https://github.com/rakudo/rakudo/blob/master/tools/templates/Makefile-backend-common.in#L231
which is calling CompUnit::Repository::Installation::upgrade-repository:
https://github.com/rakudo/rakudo/blob/master/tools/build/upgrade-repository.raku
which creates those directories:
https://github.com/rakudo/rakudo/blob/master/src/core.c/CompUnit/Repository/Installation.pm6#L113
This works on installation from source as well on the openSUSE packages, so it safe to assume that something goes wrong on your end.
from rakudo-pkg.
Thank you very much for the investigation and fixing!
from rakudo-pkg.
Related Issues (20)
- May we have a spin for Fedora 39? HOT 2
- Perhaps emphasize the flow on the readme page HOT 1
- Bintray going down HOT 2
- OS repos migration from Bintray to CloudSmith + new Alpine repos
- β/opt/rakudo-pkg/share/perl6/vendor/shortβ: Permission denied HOT 25
- zef: install-zef from package version v2021.02.1 onwards
- raku not found under Wayland HOT 5
- Fedora 34: `GLIBC_2.34' not found HOT 4
- automated setup with derivative OS HOT 1
- OpenSuse rakudo-pkg 2021.12.0-01 versions HOT 5
- WIP: Suggestions for Debian doc changes for the current system HOT 1
- Repository / package for Leap 15.4 HOT 2
- install zef as user HOT 17
- site path - share/perl6/bin vs share/perl6/site/bin HOT 1
- Show all 52 assets is broken HOT 1
- ARM support? HOT 2
- Install zef HOT 7
- rakudo-pkg for OpenSuse Leap 15.5 HOT 1
- zef install fails for rakudo-pkg Leap 15.5 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rakudo-pkg.