Coder Social home page Coder Social logo

i3oris / ic Goto Github PK

View Code? Open in Web Editor NEW
46.0 4.0 2.0 4.29 MB

REPL Interface wrapping Crystal Interpreter (crystal-i).

License: MIT License

Crystal 98.60% Makefile 0.14% HTML 0.28% CSS 0.23% JavaScript 0.70% Shell 0.01% C++ 0.04%
crystal repl interpreter crystal-interpreter crystal-lang crystal-shard

ic's People

Contributors

i3oris avatar vici37 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

vici37 zw963

ic's Issues

Build fails on macOS

I know you're still testing stuff out, but hopefully this will help you along the way. IC will be huge if it all works out! 🚀

❯ make
Undefined symbols for architecture x86_64:
  "llvm::AtomicCmpXchgInst::AtomicCmpXchgInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::AtomicOrdering, llvm::AtomicOrdering, unsigned char, llvm::Instruction*)", referenced from:
      llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>::CreateAtomicCmpXchg(llvm::Value*, llvm::Value*, llvm::Value*, llvm::AtomicOrdering, llvm::AtomicOrdering, unsigned char) in llvm_ext.o
  "llvm::buildModuleSummaryIndex(llvm::Module const&, std::__1::function<llvm::BlockFrequencyInfo* (llvm::Function const&)>, llvm::ProfileSummaryInfo*)", referenced from:
      _LLVMExtWriteBitcodeWithSummaryToFile in llvm_ext.o
     (maybe you meant: llvm::buildModuleSummaryIndex(llvm::Module const&, std::__1::function<llvm::BlockFrequencyInfo* (llvm::Function const&)>, llvm::ProfileSummaryInfo*, std::__1::function<llvm::StackSafetyInfo const* (llvm::Function const&)>))
  "llvm::DIBuilder::createCompileUnit(unsigned int, llvm::DIFile*, llvm::StringRef, bool, llvm::StringRef, unsigned int, llvm::StringRef, llvm::DICompileUnit::DebugEmissionKind, unsigned long long, bool, bool, llvm::DICompileUnit::DebugNameTableKind, bool)", referenced from:
      _LLVMExtDIBuilderCreateCompileUnit in llvm_ext.o
     (maybe you meant: llvm::DIBuilder::createCompileUnit(unsigned int, llvm::DIFile*, llvm::StringRef, bool, llvm::StringRef, unsigned int, llvm::StringRef, llvm::DICompileUnit::DebugEmissionKind, unsigned long long, bool, bool, llvm::DICompileUnit::DebugNameTableKind, bool, llvm::StringRef, llvm::StringRef))
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error: execution of command failed with code: 1: `cc "${@}" -o /Users/jeremywoertink/Development/crystal/ic/ic  -rdynamic -L/usr/local/lib /usr/local/Cellar/crystal/1.0.0/src/llvm/ext/llvm_ext.o `"/usr/local/opt/llvm/bin/llvm-config" --libs --system-libs --ldflags 2> /dev/null` -lstdc++ -lpcre -lgc -lpthread /usr/local/Cellar/crystal/1.0.0/src/ext/libcrystal.a -L/usr/local/Cellar/libevent/2.1.12/lib -levent -liconv -ldl`
make: *** [ic] Error 1
❯ crystal -v
Crystal 1.0.0 (2021-03-22)

LLVM: 9.0.1
Default target: x86_64-apple-macosx

compile failed on local linux laptop (arch linux)

When build with release, it failed.

 ╰─ $ make release
g++ -c  -o /home/zw963/Crystal/git/ic/share/crystal-ic/src/llvm/ext/llvm_ext.o /home/zw963/Crystal/git/ic/share/crystal-ic/src/llvm/ext/llvm_ext.cc -I/usr/include -std=c++14   -fno-exceptions -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
mkdir -p bin
CRYSTAL_CONFIG_PATH='$ORIGIN/../share/crystal-ic/src' CRYSTAL_PATH=/home/zw963/Crystal/git/ic/share/crystal-ic/src crystal build --progress --static src/main.cr -o bin/ic
Error: file 'src/main.cr' does not exist
make: *** [Makefile:32: release] Error 1

make without release work, but failed when try to run ./bin/ic

 ╰─ $ make
g++ -c  -o /home/zw963/Crystal/git/ic/share/crystal-ic/src/llvm/ext/llvm_ext.o /home/zw963/Crystal/git/ic/share/crystal-ic/src/llvm/ext/llvm_ext.cc -I/usr/include -std=c++14   -fno-exceptions -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
mkdir -p bin
CRYSTAL_CONFIG_PATH='$ORIGIN/../share/crystal-ic/src' CRYSTAL_PATH=/home/zw963/Crystal/git/ic/share/crystal-ic/src crystal build --progress src/ic.cr -o bin/ic
                                                      
 ╭─ 21:05  zw963 ⮀ ~/Crystal/git/ic ⮀ ⭠ (88e700b) master u=  ➦ ruby-3.1.0 
 ╰─ $ bin/ic
cannot find -lrt (/usr/lib/librt.so: cannot open shared object file: No such file or directory)
Linker arguments: -levent -lrt -ldl
Search path: /usr/lib/perf:/usr/lib/openmpi:/usr/lib32:/usr/lib/mysqlrouter:/usr/lib/libfakeroot:/lib64:/usr/lib64:/lib:/usr/lib (Crystal::Loader::LoadError)
  from share/crystal-ic/src/compiler/crystal/loader/unix.cr:86:31 in 'load_library'
  from share/crystal-ic/src/compiler/crystal/loader.cr:42:7 in 'new'
  from share/crystal-ic/src/compiler/crystal/loader/unix.cr:66:7 in 'parse'
  from share/crystal-ic/src/compiler/crystal/interpreter/context.cr:365:1 in 'loader'
  from share/crystal-ic/src/compiler/crystal/interpreter/context.cr:378:5 in 'c_function'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1883:17 in 'compile_lib_call'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1764:7 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:2990:5 in 'request_value'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:578:7 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:2990:5 in 'request_value'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1219:5 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1979:7 in 'create_compiled_def'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1777:22 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1979:7 in 'create_compiled_def'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1777:22 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:447:7 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1399:5 in 'get_const_index_and_compiled_def'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:2486:27 in 'initialize_const_if_needed'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1371:9 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:2990:5 in 'request_value'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:2144:9 in 'compile_call_args'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1773:5 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1399:5 in 'get_const_index_and_compiled_def'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:680:31 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:2904:5 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:2994:5 in 'discard_value'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:2852:7 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def:closure_owner'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:2952:5 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def:closure_owner'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:2952:5 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
  from share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:165:5 in 'compile'
  from share/crystal-ic/src/compiler/crystal/interpreter/interpreter.cr:207:5 in 'interpret'
  from share/crystal-ic/src/compiler/crystal/interpreter/repl.cr:146:5 in 'interpret'
  from share/crystal-ic/src/compiler/crystal/interpreter/repl.cr:150:5 in 'interpret_and_exit_on_error'
  from share/crystal-ic/src/compiler/crystal/interpreter/repl.cr:140:5 in 'load_prelude'
  from src/repl.cr:10:5 in 'run'
  from src/ic.cr:59:3 in '__crystal_main'
  from share/crystal-ic/src/crystal/main.cr:115:5 in 'main_user_code'
  from share/crystal-ic/src/crystal/main.cr:101:7 in 'main'
  from share/crystal-ic/src/crystal/main.cr:127:3 in 'main'
  from /usr/lib/libc.so.6 in '??'
  from /usr/lib/libc.so.6 in '__libc_start_main'
  from ../sysdeps/x86_64/start.S:117 in '_start'
  from ???

Requires

Is it possible to require a local file from within ic? This doesn't work, the file does exist:

ic(1.5.1):001> require "./myclass.cr"                                                           
In <top-level>:1:1

 1 | require "./myclass.cr"
     ^
Error: can't find file './myclass.cr'

ic(1.5.1):002> 

Thanks

Noticeable blinking while typing

I'm not sure if it's related to my setup or not.

I was connecting to a remote dev container with vscode and there's noticeable blinking using ic with vscode terminal. But I don't have this problem with the crystal repl.

Screen.Recording.2022-10-14.at.11.14.21.PM.mov

Error loading library (I think)

Not sure if the error is part of crystal's interpreter itself, or ic's own changes in crystal-ic (are there any differences in there?). Anywho, when trying ic against my largest non-trivial project, I get this error:

Invalid option: -v (OptionParser::InvalidOption)
  from lib/ic/share/crystal-ic/src/option_parser.cr:128:45 in '->'
  from lib/ic/share/crystal-ic/src/option_parser.cr:494:27 in 'parse'
  from lib/ic/share/crystal-ic/src/option_parser.cr:116:5 in 'parse'
  from lib/ic/share/crystal-ic/src/compiler/crystal/interpreter/context.cr:369:1 in 'loader'
  from lib/ic/share/crystal-ic/src/compiler/crystal/interpreter/context.cr:382:5 in 'c_function'
  from lib/ic/share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1883:17 in 'compile_lib_call'
  from lib/ic/share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:1764:7 in 'visit'
  from lib/ic/share/crystal-ic/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from lib/ic/share/crystal-ic/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
[snipped]

The stacktrace is considerably larger, but the above bit should contain the relevant parts. Putting in some custom puts statements help show what it's tripping up on. The name param passed to c_function is getcwd, and the args that are being parsed and failing utterly are:

name # => "getcwd"                                                                                                                                                                                                                            
args # => ["-lyaml",                                                                                                                                                                                                                          
 "-lgmp",                                                                                                                                                                                                                                     
 "-lz",                                                                                                                                                                                                                                       
 "`command",                                                                                                                                                                                                                                  
 "-v",                                                                                                                                                                                                                                        
 "pkg-config",                                                                                                                                                                                                                                
 ">",                                                                                                                                                                                                                                         
 "/dev/null",                                                                                                                                                                                                                                 
 "&&",                                                                                                                                                                                                                                        
 "pkg-config",                                                                                                                                                                                                                                
 "--libs",                                                                                                                                                                                                                                    
 "--silence-errors",                                                                                                                                                                                                                          
 "libssl",                                                                                                                                                                                                                                    
 "||",                                                                                                                                                                                                                                        
 "printf",                                                                                                                                                                                                                                    
 "%s",                                                                                                                                                                                                                                        
 "-lssl -lcrypto`",                                                                                                                                                                                                                           
 "`command",                                                                                                                                                                                                                                  
 "-v",                                                                                                                                                                                                                                        
 "pkg-config",                                                                                                                                                                                                                                
 ">",                                                                                                                                                                                                                                         
 "/dev/null",                                                                                                                                                                                                                                 
 "&&",                                                                                                                                                                                                                                        
 "pkg-config",                                                                                                                                                                                                                                
 "--libs",                                                                                                                                                                                                                                    
 "--silence-errors",
 "libcrypto",
 "||",
 "printf",
 "%s",
 "-lcrypto`",
 "-lpcre",
 "-levent"]

Not entirely sure where to go from here from a debugging perspective. Let me know if you have any ideas of where I can search next, I'm not afraid to get my hands dirty when I have time :)

Build failed with Crystal 1.8.0

make
mkdir -p bin
CRYSTAL_CONFIG_PATH='$ORIGIN/../share/crystal-ic/src' CRYSTAL_PATH=lib:/mnt/disk/ruby/crystal/ic/share/crystal-ic/src crystal build -Dpreview_mt --progress src/ic.cr -o bin/ic
Showing last frame. Use --error-trace for full trace.

In share/crystal-ic/lib/reply/src/term_cursor.cr:6:5

 6 | ESC      = "\e"
     ^--
Error: already initialized constant Reply::Term::Cursor::ESC
crystal -v
Crystal 1.8.0 [14bfa992e] (2023-04-14)

LLVM: 15.0.7
Default target: x86_64-unknown-linux-gnu

This is because the Crystal 1.8.0 release already includes some libraries that were originally from this shard.

Highlight issue for the inspect of object. e.g #<Proc(Nil):0x7f2fd9a5f600:closure>)

Following is a screenshot:

image

Following is text version:

ic(1.6.1):pry> cli.class.commands
 => {"help" => Procodile::CliCommand(@name="help", @description="Shows this help output", @options=nil, @callable=#<Proc(Nil):0x7f2fd9a5f600:closure>), "kill" => Procodile::CliCommand(@name="kill", @description="Forcefully kill all known processes", @options=nil, @callable=#<Proc(Nil):0x7f2fd9afe780:closure>), "start" => Procodile::CliCommand(@name="start", @description="Starts processes and/or the supervisor", @options=nil, @callable=#<Proc(Nil):0x7f2fd770da00:closure>)}

thanks

Just a note

Hi!

I started working on crystal i (announced at today's Crystal Conference) about two months ago and after a month or so of working on it I revealed it to some of the core team members. One of them (Johannes) told me that you were working on this already, and I felt a bit bad that we were duplicating work. At that time I couldn't tell you this because I wanted to keep it a secret until today. I also didn't know if what I was doing was going to work at all. I hope you are not mad! 🙏 I think working on these things is super fun and interesting, regardless of whether they see the light some day or not. I hope with the lessons you learned with this project you can help us make crystal i complete and even better. Thank you! ❤️

Compile error to ic/bin

With the intention of having an ic binary, I followed the readme procedure, and got this:

~/abs $ LANG=C git clone https://github.com/I3oris/ic.git
Cloning into 'ic'...
remote: Enumerating objects: 4136, done.
remote: Counting objects: 100% (917/917), done.
remote: Compressing objects: 100% (578/578), done.
remote: Total 4136 (delta 413), reused 551 (delta 289), pack-reused 3219
Receiving objects: 100% (4136/4136), 4.28 MiB | 5.98 MiB/s, done.
Resolving deltas: 100% (2028/2028), done.
hubert@xps15al:~/abs $ cd ic
hubert@xps15al:~/abs/ic $ LANG=C make release
g++ -c  -o /home/hubert/abs/ic/share/crystal-ic/src/llvm/ext/llvm_ext.o /home/hubert/abs/ic/share/crystal-ic/src/llvm/ext/llvm_ext.cc -I/usr/include -std=c++14   -fno-exceptions -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
mkdir -p bin
CRYSTAL_CONFIG_PATH='$ORIGIN/../share/crystal-ic/src' CRYSTAL_PATH=lib:/home/hubert/abs/ic/share/crystal-ic/src crystal build -Dpreview_mt --progress --release src/ic.cr -o bin/ic
Showing last frame. Use --error-trace for full trace.

In src/repl_readers.cr:1:1

 1 | require "reply"
     ^
Error: can't find file 'reply'

If you're trying to require a shard:
- Did you remember to run `shards install`?
- Did you make sure you're running the compiler in the same directory as your shard.yml?
make: *** [Makefile:35: release] Error 1

Am I missing something ?

Thanks for your work.

Try build ic again after update crystal to 1.12.1, but get ic 1.11.2

My current crystal was compiled by myself, and update into 1.12.1

 ╰─ $ cr version
Crystal 1.12.1 [4cea10199] (2024-04-11)

LLVM: 17.0.6
Default target: x86_64-pc-linux-gnu

But when i try to rebuilt ic use make release, l always get the ic of verison 1.11.2

 ╰─ $ ic
ic(1.11.2):001>

What is expected is, 1.12.1.

Thanks.

Support 1.11?

Of cause, i can use crystal i instead, but, ic always better performance when start ic.

Thanks.

build failed on 1.8.0

Please check following error message.

 ╰─ $ make
mkdir -p bin
CRYSTAL_CONFIG_PATH='$ORIGIN/../share/crystal-ic/src' CRYSTAL_PATH=lib:/home/zw963/Crystal/crystal-lang/ic/share/crystal-ic/src crystal build -Dpreview_mt --progress src/ic.cr -o bin/ic
Module validation failed: Intrinsic name not mangled correctly for type arguments! Should be: llvm.memset.p0.i64
ptr @llvm.memset.p0i8.i64
 (Exception)
  from /home/zw963/Crystal/crystal-lang/crystal/src/llvm/module.cr:72:9 in 'codegen'
  from /home/zw963/Crystal/crystal-lang/crystal/src/compiler/crystal/compiler.cr:162:16 in 'compile'
  from /home/zw963/Crystal/crystal-lang/crystal/src/compiler/crystal/command.cr:338:3 in 'run'
  from /home/zw963/Crystal/crystal-lang/crystal/src/compiler/crystal/command.cr:51:5 in '__crystal_main'
  from /home/zw963/Crystal/crystal-lang/crystal/src/crystal/main.cr:115:5 in 'main'
  from /usr/lib/libc.so.6 in '??'
  from /usr/lib/libc.so.6 in '__libc_start_main'
  from crystal in '_start'
  from ???
Error: you've found a bug in the Crystal compiler. Please open an issue, including source code that will allow us to reproduce the bug: https://github.com/crystal-lang/crystal/issues
make: *** [Makefile:30: bin/ic] Error 1
 ╰─ $ cr version
Crystal 1.8.0 [14bfa992e] (2023-04-14)

LLVM: 15.0.7
Default target: x86_64-pc-linux-gnu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.