Giter VIP home page Giter VIP logo

kos-ports's Introduction


KallistiOS

Independent SDK for the Sega Dreamcast
Explore the docs »

Overview

KOS is an unofficial development kit for the SEGA Dreamcast game console with some support for the NAOMI and NAOMI 2 arcade boards.

KOS was developed from scratch over the internet by a group of free software developers and has no relation to the official Sega Katana or Microsoft Windows CE Dreamcast development kits. This has allowed it to fuel a thriving Dreamcast homebrew scene, powering many commercial releases for the platform over the years. It supports a significant portion of the Dreamcast's hardware capabilities and a wide variety of peripherals, accessories, and add-ons for the console, including custom hardware modifications that have been created by the scene.

Despite the console's age, KOS offers an extremely modern, programmer-friendly development environment. Using the latest GCC toolchain, it supports the entirety of C17 and C++20 including their standard libraries, along with support for portions of C23, C++23, Objective-C, and various POSIX APIs. Additionally, KOS-ports offers a rich set of add-on libraries such as SDL, OpenGL, OpenAL, and Lua for the platform.

Features

Core Functionality

  • Concurrency with Kernel Threads, C11 Threads, C++11 std::thread, POSIX threads
  • Virtual Filesystem Abstraction
  • IPv4/IPv6 Network Stack
  • Dynamically Loaded Libraries and Modules
  • GDB Debugger Support

Dreamcast Hardware Support

  • GD-ROM Optical Drive
  • Low-level 3D PowerVR Graphics
  • SH4 ASM-Optimized Math Routines
  • SH4 SCIF Serial I/O
  • DMA Controller
  • Flashrom Filesystem
  • AICA SPU Sound Processor Driver
  • Cache and Store Queue Management
  • Timer Peripherals, Real-Time Clock, Watchdog Timer
  • Performance Counters
  • MMU Management
  • BIOS Font Rendering

Peripherals and Accessory Support

  • Controller, ASCII Pad
  • Arcade Stick, Twin Stick, Mission Stick
  • Keyboard
  • Mouse
  • Visual Memory Unit
  • Puru Puru Vibration Pack
  • Seaman Microphone
  • Dreameye Webcam
  • Lightgun
  • Racing Wheel
  • Fishing Rod
  • Samba De Amigo Maracas
  • Dance Mat
  • Dial-up Modem
  • Broadband Adapter
  • LAN Adapter
  • VGA Adapter
  • SD Card Reader

Hardware Modification Support

  • IDE Hard Drive
  • 32MB RAM Upgrade
  • Custom BIOS Flashroms

Getting Started

A beginner's guide to development for the Sega Dreamcast along with detailed instructions for installing KOS and the required toolchains can be found on the Dreamcast Wiki. Additional documentation can be found in the docs folder.

Examples

Once you've set up the environment and are ready to begin developing, a good place to start learning is the examples directory, which provides demos for the various KOS APIs and for interacting with the Dreamcast's hardware. Examples include:

  • Hello World
  • Console Input/Output
  • Assertions, stacktraces, threading
  • Drawing directly to the framebuffer
  • Rendering with OpenGL
  • Rendering with KGL
  • Rendering with KOS PVR API
  • Texturing with libPNG
  • Bump maps, modifier volumes, render-to-texture PVR effects
  • Audio playback on the ARM SPU
  • Audio playback using SDL Audio
  • Audio playback using OGG, MP3, and CDDA
  • Querying controller input
  • Querying keyboard input
  • Querying mouse input
  • Querying lightgun input
  • Accessing the VMU filesystem
  • Accessing the SD card filesystem
  • Networking with the modem, broadband adapter, and LAN adapter
  • Taking pictures with the DreamEye webcam
  • Reading and Writing to/from ATA devices
  • Testing 32MB RAM hardware mod
  • Interactive Lua interpreter terminal

Resources

Dreamcast Wiki: Large collection of tutorials and articles for beginners
Simulant Discord Chat: Home to the official Discord channel of KOS
DCEmulation Forums: Goldmine of Dreamcast development information and history
IRC Channel: irc.libera.chat #dreamcastdev

kos-ports's People

Contributors

asiekierka avatar bhaal22 avatar juanvcs avatar kazade avatar ljsebald avatar maslevin avatar stone3311 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

kos-ports's Issues

libtremor is no more available

It looks like svn repo from xiph.org is no more available.
Same for the git repo.

svn checkout http://svn.xiph.org/branches/lowmem-branch/Tremor/
svn: E170013: Unable to connect to a repository at URL 'http://svn.xiph.org/branches/lowmem-branch/Tremor'
svn: E000111: Error running context: Connection refused

Question About SDL2 support

I’m in a Discord server with one of the core maintainers of SDL, Ryan Gordon, and we were wondering why SDL2 hasn’t been supported yet? I remember years back hacking on Kallistios and seem to recall SDL2 not having an equivalent to a disc reading implementation used but I wanted to verify my findings. If you have any interest in discussing this further, I could link the Discord server and we could try to figure something out with it.

sh-elf-gcc: error: unrecognized command line option ‘-pthread’ when building freetype

Doing make install in the freetype folder gives me the -pthread error each time. The kos-cc version is 9.3.0 so I am unsure why it doesn't build properly. This is the full output of make install if that helps:

Finished processing dependencies for freetype.
File "freetype-2.10.2.tar.gz" is ok.
Unpacking freetype-2.10.2.tar.gz ...
Copying KOS files...
make[1]: Entering directory '/opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2'

FreeType build system -- automatic system detection

The following settings are used:

  platform                    unix
  compiler                    kos-cc
  configuration directory     ./builds/unix
  configuration rules         ./builds/unix/unix.mk

If this does not correspond to your system or settings please remove the file
`config.mk' from this directory then read the INSTALL file for help.

Otherwise, simply type `make' again to build the library,
or `make refdoc' to build the API reference (this needs Python >= 3.5).

Generating modules list in ./objs/ftmodule.h...
done.
* module: truetype  (Windows/Mac font files with extension *.ttf or *.ttc)
* module: type1     (Postscript font files with extension *.pfa or *.pfb)
* module: cff       (OpenType fonts with extension *.otf)
* module: cid       (Postscript CID-keyed fonts, no known extension)
* module: pfr       (PFR/TrueDoc font files with extension *.pfr)
* module: type42    (Type 42 font files with no known extension)
* module: winfnt    (Windows bitmap fonts with extension *.fnt or *.fon)
* module: pcf       (pcf bitmap fonts)
* module: bdf       (bdf bitmap fonts)
* module: sfnt      (helper module for TrueType & OpenType formats)
* module: autofit   (automatic hinting module)
* module: pshinter  (Postscript hinter module)
* module: raster    (monochrome bitmap renderer)
* module: smooth    (anti-aliased bitmap renderer)
* module: smooth    (anti-aliased bitmap renderer for LCDs)
* module: smooth    (anti-aliased bitmap renderer for vertical LCDs)
* module: psaux     (Postscript Type 1 & Type 2 helper module)
* module: psnames   (Postscript & Unicode Glyph name handling)
cd builds/unix; \
        ./configure  '--prefix=/opt/toolchains/dc/kos/../kos-ports/freetype/inst' '--host=sh-elf' '--disable-mmap' '--with-brotli=no'
checking build system type... x86_64-pc-linux-gnu
checking host system type... sh-unknown-elf
checking for sh-elf-gcc... kos-cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether kos-cc accepts -g... yes
checking for kos-cc option to accept ISO C89... none needed
checking how to run the C preprocessor... kos-cc -E
checking for sh-elf-pkg-config... no
checking for pkg-config... /usr/bin/pkg-config
configure: WARNING: using cross tools not prefixed with host triplet
checking pkg-config is at least version 0.24... yes
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by kos-cc... /opt/toolchains/dc/sh-elf/sh-elf/bin/ld
checking if the linker (/opt/toolchains/dc/sh-elf/sh-elf/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /opt/toolchains/dc/sh-elf/bin/sh-elf-nm -B
checking the name lister (/opt/toolchains/dc/sh-elf/bin/sh-elf-nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to sh-unknown-elf format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /opt/toolchains/dc/sh-elf/sh-elf/bin/ld option to reload object files... -r
checking for sh-elf-objdump... sh-elf-objdump
checking how to recognize dependent libraries... unknown
checking for sh-elf-dlltool... no
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for sh-elf-ar... sh-elf-ar
checking for archiver @FILE support... @
checking for sh-elf-strip... sh-elf-strip
checking for sh-elf-ranlib... sh-elf-ranlib
checking for gawk... gawk
checking command to parse /opt/toolchains/dc/sh-elf/bin/sh-elf-nm -B output from kos-cc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for sh-elf-mt... no
checking for mt... no
checking if : is a manifest tool... no
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... no
checking for objdir... .libs
checking if kos-cc supports -fno-rtti -fno-exceptions... no
checking for kos-cc option to produce PIC... -fPIC -DPIC
checking if kos-cc PIC flag -fPIC -DPIC works... yes
checking if kos-cc static flag -static works... yes
checking if kos-cc supports -c -o file.o... yes
checking if kos-cc supports -c -o file.o... (cached) yes
checking whether the kos-cc linker (/opt/toolchains/dc/sh-elf/sh-elf/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... no
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... no
checking whether to build shared libraries... no
checking whether to build static libraries... yes
checking windows.h usability... no
checking windows.h presence... no
checking for windows.h... no
checking for x86_64-pc-linux-gnu-gcc... x86_64-pc-linux-gnu-gcc
checking for x86_64-pc-linux-gnu-gcc... (cached) x86_64-pc-linux-gnu-gcc
checking for x86_64-pc-linux-gnu-gcc... (cached) x86_64-pc-linux-gnu-gcc
checking for suffix of native executables... 
checking for a BSD-compatible install... /usr/bin/install -c
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for ANSI C header files... (cached) yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking size of int... 4
checking size of long... 4
checking for unsigned long long int... yes
checking for long long int... yes
checking whether cpp computation of bit length in ftconfig.in works... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... unknown
checking for _LARGE_FILES value needed for large files... unknown
checking for memcpy... yes
checking for memmove... yes
checking gcc compiler flag -pedantic to assure ANSI C works correctly... ok, adding to XX_ANSIFLAGS
checking gcc compiler flag -ansi to assure ANSI C works correctly... ok, adding to XX_ANSIFLAGS
checking for -fvisibility=hidden compiler flag... yes
checking for ZLIB... yes
checking for BZIP2... yes
checking for LIBPNG... yes
checking for HARFBUZZ... yes
checking for library containing clock_gettime... no
checking for python3... python3
checking for python version... 3.10.5
checking for `docwriter' Python module... no
configure: creating ./config.status
config.status: creating ftoption.h
config.status: creating unix-cc.mk
config.status: creating unix-def.mk
config.status: creating ftconfig.h
config.status: executing libtool commands
configure:

Library configuration:
  external zlib: yes (ZLIB_CFLAGS and ZLIB_LIBS)
  bzip2:         yes (BZIP2_CFLAGS and BZIP2_LIBS)
  libpng:        yes (LIBPNG_CFLAGS and LIBPNG_LIBS)
  harfbuzz:      yes (pkg-config)
  brotli:        no

configure:
  Warning: `make refdoc' will fail since pip package `docwriter' is not
  installed.  To install, run `python3 -m pip install docwriter', or to use a Python
  virtual environment, run `make refdoc-venv' (requires pip package
  `virtualenv'). These operations require Python >= 3.5.
  
make[1]: Leaving directory '/opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2'
make[1]: Entering directory '/opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2'
./builds/unix/libtool --mode=compile kos-cc -pedantic -ansi -I/opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2/objs -I./builds/unix -I/opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2/include  -c -Wall -g -O2 -fvisibility=hidden -I/opt/toolchains/dc/kos/../kos-ports/include/zlib -I/opt/toolchains/dc/kos/../kos-ports/include/bzlib -I/opt/toolchains/dc/kos/../kos-ports/include/png -std=gnu11 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread -DFT_CONFIG_CONFIG_H="<ftconfig.h>" -DFT_CONFIG_MODULES_H="<ftmodule.h>" -DFT_CONFIG_OPTIONS_H="<ftoption.h>" -DFT2_BUILD_LIBRARY -o /opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2/objs/ftsystem.lo /opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2/src/base/ftsystem.c
libtool: compile:  kos-cc -pedantic -ansi -I/opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2/objs -I./builds/unix -I/opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2/include -c -Wall -g -O2 -fvisibility=hidden -I/opt/toolchains/dc/kos/../kos-ports/include/zlib -I/opt/toolchains/dc/kos/../kos-ports/include/bzlib -I/opt/toolchains/dc/kos/../kos-ports/include/png -std=gnu11 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread "-DFT_CONFIG_CONFIG_H=<ftconfig.h>" "-DFT_CONFIG_MODULES_H=<ftmodule.h>" "-DFT_CONFIG_OPTIONS_H=<ftoption.h>" -DFT2_BUILD_LIBRARY /opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2/src/base/ftsystem.c -o /opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2/objs/ftsystem.o
sh-elf-gcc: error: unrecognized command line option ‘-pthread’
make[1]: *** [/opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2/builds/freetype.mk:204: /opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2/objs/ftsystem.lo] Error 1
make[1]: Leaving directory '/opt/toolchains/dc/kos-ports/freetype/build/freetype-2.10.2'
make: *** [/opt/toolchains/dc/kos/../kos-ports/scripts/build.mk:19: build-stamp] Error 2

jpegsrc.v9d.tar.gz is changed

Hi! Here is new distinfo:

SHA256 (jpegsrc.v9d.tar.gz) = 2303a6acfb6cc533e0e86e8a9d29f7e6079e118b9de3f96e07a71a11c082fa6a
SIZE (jpegsrc.v9d.tar.gz) = 1030917

Opus lib

Seems to be broken. I haven't compiled it before so I am not sure it due to the recent update of repos. I just ran utils/build-all.sh and encountered a compiler error:

CC celt/bands.lo
In file included from /opt/toolchains/dc/sh-elf/sh-elf/include/stdio.h:800,
from celt/os_support.h:42,
from celt/bands.c:40:
/opt/toolchains/dc/sh-elf/sh-elf/include/ssp/stdio.h:40:5: error: unknown type name ‘__va_list’; did you mean ‘va_list’?
40 | __va_list)
| ^~~~~~~~~
| va_list
/opt/toolchains/dc/sh-elf/sh-elf/include/ssp/stdio.h:46:30: error: unknown type name ‘__va_list’; did you mean ‘va_list’?
46 | const char *__restrict, __va_list)
| ^~~~~~~~~
| va_list
make[1]: *** [celt/bands.lo] Error 1
make: *** [build-stamp] Error 2

libopus 1.3.1 does not compile

My dc environment:

KOS_STRIP=/opt/toolchains/dc/sh-elf/bin/sh-elf-strip
DC_ARM_AFLAGS=-mcpu=arm7di --fix-v4bx
KOS_AFLAGS= -little
KOS_CCPLUS=/opt/toolchains/dc/sh-elf/bin/sh-elf-g++
HOSTNAME=33353e70e801
DC_ARM_AS=/opt/toolchains/dc/arm-eabi/bin/arm-eabi-as
DC_ARM_AR=/opt/toolchains/dc/arm-eabi/bin/arm-eabi-ar
KOS_GENROMFS=/src/dc/kos/utils/genromfs/genromfs
KOS_PORTS=/src/dc/kos/../kos-ports
KOS_LOADER=dc-tool -x
KOS_OBJCOPY=/opt/toolchains/dc/sh-elf/bin/sh-elf-objcopy
KOS_LIB_PATHS=-L/src/dc/kos/lib/dreamcast -L/src/dc/kos/addons/lib/dreamcast -L/src/dc/kos/../kos-ports/lib
KOS_CFLAGS=-O2 -fomit-frame-pointer -ml -m4-single-only -ffunction-sections -fdata-sections -I/src/dc/kos/../kos-ports/include -I/src/dc/kos/include -I/src/dc/kos/kernel/arch/dreamcast/include -I/src/dc/kos/addons/include -I/src/dc/kos/../kos-ports/include -D_arch_dreamcast -D_arch_sub_pristine -Wall -g -fno-builtin
PWD=/src/project
KOS_GCCVER=9.3.0
KOS_ARCH=dreamcast
KOS_LD_SCRIPT=-T/src/dc/kos/utils/ldscripts/shlelf.xc
KOS_LIBS=-Wl,--start-group -lkallisti -lc -lgcc -Wl,--end-group
HOME=/root
KOS_SUBARCH=pristine
KOS_LD=/opt/toolchains/dc/sh-elf/bin/sh-elf-ld
KOS_BASE=/src/dc/kos
KOS_CPPSTD=-std=gnu++98
KOS_AR=/opt/toolchains/dc/sh-elf/bin/sh-elf-ar
KOS_AS=/opt/toolchains/dc/sh-elf/bin/sh-elf-as
KOS_CC=/opt/toolchains/dc/sh-elf/bin/sh-elf-gcc
EXTRA_MAKEFILE_BASE=/usr/local/dc
KOS_INC_PATHS=-I/src/dc/kos/../kos-ports/include -I/src/dc/kos/include -I/src/dc/kos/kernel/arch/dreamcast/include -I/src/dc/kos/addons/include -I/src/dc/kos/../kos-ports/include
TERM=xterm
KOS_LDFLAGS= -ml -m4-single-only -Wl,-Ttext=0x8c010000 -Wl,--gc-sections -T/src/dc/kos/utils/ldscripts/shlelf.xc -nodefaultlibs -L/src/dc/kos/lib/dreamcast -L/src/dc/kos/addons/lib/dreamcast -L/src/dc/kos/../kos-ports/lib
DC_ARM_OBJCOPY=/opt/toolchains/dc/arm-eabi/bin/arm-eabi-objcopy
SHLVL=1
KOS_MAKE=make
DC_ARM_CC=/opt/toolchains/dc/arm-eabi/bin/arm-eabi-gcc
KOS_START=
KOS_CC_PREFIX=sh-elf
KOS_ARCH_DIR=/src/dc/kos/kernel/arch/dreamcast
DC_ARM_LD=/opt/toolchains/dc/arm-eabi/bin/arm-eabi-ld
PATH=/opt/toolchains/dc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/toolchains/dc/sh-elf/bin:/src/dc/kos/utils/gnu_wrappers
DC_ARM_CFLAGS=-mcpu=arm7di -Wall -O2 -fno-strict-aliasing -Wl,--fix-v4bx -Wa,--fix-v4bx
KOS_CPPFLAGS=  -fno-operator-names -fno-rtti -fno-exceptions
KOS_CSTD=-std=c99
DC_ARM_BASE=/opt/toolchains/dc/arm-eabi
KOS_RANLIB=/opt/toolchains/dc/sh-elf/bin/sh-elf-ranlib
KOS_CC_BASE=/opt/toolchains/dc/sh-elf
DC_ARM_PREFIX=arm-eabi
root@33353e70e801:/src/project# sh-elf-gcc -v
Using built-in specs.
COLLECT_GCC=sh-elf-gcc
COLLECT_LTO_WRAPPER=/opt/toolchains/dc/sh-elf/libexec/gcc/sh-elf/9.3.0/lto-wrapper
Target: sh-elf
Configured with: ../gcc-9.3.0/configure --target=sh-elf --prefix=/opt/toolchains/dc/sh-elf --without-headers --with-newlib --enable-languages=c --disable-libssp --disable-tls --with-multilib-list=m4-single-only --with-endian=little --with-cpu=m4-single-only CXX=g++ : (reconfigured) ../gcc-9.3.0/configure --target=sh-elf --prefix=/opt/toolchains/dc/sh-elf --with-newlib --disable-libssp --disable-tls --enable-threads=kos --enable-languages=c,c++,objc,obj-c++ --with-multilib-list=m4-single-only --with-endian=little --with-cpu=m4-single-only CXX=g++
Thread model: kos
gcc version 9.3.0 (GCC)

Compilation of libopus:

root@33353e70e801:/src/project# make
make  all-recursive
make[1]: Entering directory '/src/project'
make[2]: Entering directory '/src/project'
  CC       celt/bands.lo
In file included from /opt/toolchains/dc/sh-elf/sh-elf/include/stdio.h:800,
                 from celt/os_support.h:42,
                 from celt/bands.c:40:
/opt/toolchains/dc/sh-elf/sh-elf/include/ssp/stdio.h:40:5: error: unknown type name '__va_list'; did you mean 'va_list'?
   40 |     __va_list)
      |     ^~~~~~~~~
      |     va_list
/opt/toolchains/dc/sh-elf/sh-elf/include/ssp/stdio.h:46:30: error: unknown type name '__va_list'; did you mean 'va_list'?
   46 |      const char *__restrict, __va_list)

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.