Giter Site home page Giter Site logo

frp-arduino's Issues

test Fails Because of Missing Files in dist

@rickardlindberg The tests are currently failing on my fork because the src files don't match what's in dist/src.

cabal file
  sdist
    contains all source code FAILED [1]
...
Failures:

  Spec.hs:78: 
  1) cabal file, sdist, contains all source code
       dist/frp-arduino-0.1.0.3> diff -r ../../src src > /home/jwright/Downloads/repos/frp-arduino/test_report.txt 2>&1
       
       Only in ../../src/Arduino: Nano.hs

Is this to force a release each time a significant change is made to the codebase? If so, could you explain the procedure for doing the release properly?

How much optimization can we get from gcc?

The C code that we generate is quite verbose. Does it matter?

In the standard makefile, the LCD example looks like this:

Program:    8258 bytes (25.2% Full)
(.text + .data + .bootloader)

Data:          4 bytes (0.2% Full)
(.data + .bss + .noinit)

When setting gcc optimization level to 3, we get this:

Program:    1390 bytes (4.2% Full)
(.text + .data + .bootloader)

Data:          4 bytes (0.2% Full)
(.data + .bss + .noinit)

Quite an improvement in program size :-)

Issue handling process

I'm trying to enforce the C4 process to our issue handling. Specifically this part:

The user or Contributor SHOULD write the issue by describing the problem they face or observe.

The user or Contributor SHOULD seek consensus on the accuracy of their observation, and the value of solving the problem.

Users SHALL NOT log feature requests, ideas, suggestions, or any solutions to problems that are not explicitly documented and provable.

Problems that we agree on can get the "agreed problem" label. Questions and general discussions can get the "question" label.

Question: Potentially add support for random sampling

Hey, I was wondering how hard it'd be to add support for random delays between samples.

The primary motivation is compressive sensing, where by assuming the signal is sparse, you can reconstruct signals given way fewer samples.

A good example is the single pixel camera from Rice University, which uses a similar technique to reconstruct a scene given only 1 pixel and random samples from the environment.

I think this matches well with the arduino since it has a relatively low possible sample rate (~9.5 kHz), but many processes (near field acoustics for example) require ~44.1kHz given uniform sampling. <-- I'm working on a process where I have to use expensive audio cards, but would really like to just use arduinos

Problem: Num TypeClass not finished

From https://github.com/frp-arduino/frp-arduino/blob/master/src/Arduino/DSL.hs#L87

instance Num (Expression a) where
    (+) left right = Expression $ DAG.Add (unExpression left) (unExpression right)
    (-) left right = Expression $ DAG.Sub (unExpression left) (unExpression right)
    (*) = error "* not yet implemented"
    abs = error "abs not yet implemented"
    signum = error "signum not yet implemented"
    fromInteger value = Expression $ DAG.WordConstant $ fromIntegral value

Question: Why is there no pin9?

My Uno has 14 pins, 0-13. I understand that with 0 and 1 being Rx and Tx we don't need them much. But why is there no pin9 definition?

Problem: There is no cabal file

Using cabal is the default way to install Haskell packages.

This project would probably attract more people if it followed that standard convention.

C code generation using Ivory or Copilot

So I've been looking at the C code generation, it reminds me a lot of 2 projects from Galois that we might consider leveraging (although that can sometime be painful in Haskell).

The first is Ivory which is EDSL for systems programming.

The second is CoPilot which came before Ivory. This actually almost exactly matches the current Stream transformations.

Project status

Is the codebase currently suitable for production on GHC 7.10.x/7.10.2? The last commit was 7 months ago but the project looks appealing.

Problem: IC2 missing from API

IC2 is a bus protocol for interchipset communication. This can be used for expanding the number of pins, or having to arduinos communicate. I think that it'd be nice to abstract above this and have the DSL treat them like streams.

Support for stack

Hi,
I don't have GHC globally installed, but I do have Stack, so in my local environment (Mac), I made this modification and everything works:

$ git diff
diff --git a/make b/make
index b74fec1..8c07a1b 100755
--- a/make
+++ b/make
@@ -35,7 +35,7 @@ then
     rm -rf $OUTPUT_DIR
 else
     mkdir -p $OUTPUT_DIR
-    ghc \
+    stack exec -- ghc \
         --make \
         -Werror \
         -fwarn-unused-imports \

It would be nice if this were auto-detected.

Question: Reading inputs via interrupts

I'm curious, as it seems to be quite common that some inputs are needed to be read via interrupts (say, an encoder input that can change fast, and normal 'polling' in a loop would have ended in some state changes missed) - is there something implemented/planned to handle such scenario?

Question: Should DAG.Expression remain untyped?

If I have time, I may try to tackle this. The main idea is changing the definition of DAG.Expression to DAG.Expression a

for Example:

{-# LANGUAGE GADTs #-}

data Expression a where
  Input :: Int -> Expression Int
  Not :: Expression Bool -> Expression (Bool -> Bool)
  Even :: Integral a => Expression a -> Expression Bool
  ByteConstant :: Byte -> Expression Byte
  ...
  ...
  -- new proposed expression
  Apply :: Expression (a -> b) -> Expression a -> Expression b

Aside from helping check the correctness of the Code Generator, this might allow DAG.Expression to just merge with DSL.Expression since they're likely be isomorphic.

Problem: Can not use LCD display from DSL

I don't have a particular project I want to build using this DSL. I have a Arduino starter kit with a book full of examples. I've been trying to implement some examples in the DSL to have something to work on. As the examples get more complex, the language has to be extended or improved.

The next thing I'm interested in using is a LCD display.

I first solution would be just to print a single character on the first cell of the LCD.

Then extend to being able to print strings at arbitrary positions.

Question: Could we use linear types to avoid duplicate resource allocation

In the now resolved #1, the main problem is that after having used the resource it was still available for binding.

Linear types (based on linear logic) encode this kind of invariant directly. Here's a slide deck that overviews how to emulate these in Haskell.... but this is the kind of situation where Haskell's type system is abit wanting

Lastly as a bonus, languages like Rust have linear logic built-in for memory safety. That might make it a better target language (and there is even work showing it working on Arduino)

Reforumlate Arduino Controller as Hybrid I/O Automata (HIOA)

Currently, the generated Arduino code seems to act like a single state machine where the dynamics are governed by the Stream binding to pins (which can be seen as the variables)

I propose introducing Events (which correspond to guards in HIOA) for transitioning between states.

These could look like

twostates

or perhaps

diagram

The syntax for the two state system could look like:

type Behavior a = Stream a

switcher :: Behavior a -> Event (Behavior a) -> Behavior a

s1 :: Behavior Int
s2 :: Behavior Int

s3 :: Behavior Bool
s3 = isEven `mapS` s1

s4 :: Behavior (Int, Bool)
s4 = s3 <> s1

s5 :: Behavior (Bool, Int)
s5 = s3 <> s2

-- Triggered if First element is True, Holds behavior to be used if Triggered
buttonEvent :: Behavior (Bool, a) -> Event (Behavior (Bool, a))

e :: Event (Behavior (Bool, Int))
e = buttonEvent s5

pin1 := switch s4 e

Which would change from behavior s4 to behavior s5 when s1 is even

Not able to run make succesfully

BOARD=Uno make Blink upload
make: *** No rule to make target 'Blink'. Stop.

Output of BOARD=Uno make -np Blink upload

Pastbin: https://pastebin.com/raw/6diutKXr

Github (seems to interpret it as markdown unfortunately):

BOARD=Uno make -np Blink upload ``` # GNU Make 4.2.1 # Built for x86_64-pc-linux-gnu # Copyright (C) 1988-2016 Free Software Foundation, Inc. # License GPLv3+: GNU GPL version 3 or later # This is free software: you are free to change and redistribute it. # There is NO WARRANTY, to the extent permitted by law.

Make data base, printed on Wed Apr 17 22:23:04 2019

Variables

automatic

<D = $(patsubst %/,%,$(dir $<))

automatic

?F = $(notdir $?)

environment

DESKTOP_SESSION = /nix/store/19k6msw4lcfszk7iak0h9ba3navqzffv-desktops/share/xsessions/xterm

default

.SHELLFLAGS := -c

environment

__NIXOS_SET_ENVIRONMENT_DONE = 1

environment

XDG_SESSION_CLASS = user

environment

XDG_SESSION_TYPE = x11

default

CWEAVE = cweave

automatic

?D = $(patsubst %/,%,$(dir $?))

automatic

@d = $(patsubst %/,%,$(dir $@))

environment

XAUTHORITY = /home/chris/.Xauthority

automatic

@f = $(notdir $@)

default

MAKE_VERSION := 4.2.1

makefile

CURDIR := /home/chris/fromLaptopt/usbflash/Haskell/AstatineAlphaAvocado/frp-arduino

makefile

SHELL = /bin/sh

default

RM = rm -f

environment

NIXPKGS_CONFIG = /etc/nix/nixpkgs-config.nix

environment

VTE_VERSION = 5202

environment

_ = /run/current-system/sw/bin/make

default

PREPROCESS.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F

default

LINK.m = $(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)

environment

XDG_CONFIG_DIRS = /home/chris/.nix-profile/etc/xdg:/nix/var/nix/profiles/default/etc/xdg:/run/current-system/sw/etc/xdg:/etc/profiles/per-user/chris/etc/xdg

default

OUTPUT_OPTION = -o $@

default

COMPILE.cpp = $(COMPILE.cc)

makefile

MAKEFILE_LIST :=

'override' directive

GNUMAKEFLAGS :=

default

LINK.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)

environment

XDG_DATA_DIRS = /nix/store/rgzydxvigsp2jfdxl5kfws449q9970hc-gnome-terminal-3.28.2/share:/nix/store/n5ryp9j18r3kp5pzm8jhsa34d25m6wy7-gtk+3-3.22.30/share/gsettings-schemas/gtk+3-3.22.30:/nix/store/bfh60vmi54fshkir5x7i28wqbzlj77fj-gsettings-desktop-schemas-3.28.0/share/gsettings-schemas/gsettings-desktop-schemas-3.28.0:/nix/store/n5ryp9j18r3kp5pzm8jhsa34d25m6wy7-gtk+3-3.22.30/share/gsettings-schemas/gtk+3-3.22.30:/nix/store/j0kslmr2njl81cn1v0292xs4fjgfffdi-nautilus-3.28.1/share/gsettings-schemas/nautilus-3.28.1:/nix/store/n5ryp9j18r3kp5pzm8jhsa34d25m6wy7-gtk+3-3.22.30/share/gsettings-schemas/gtk+3-3.22.30:/nix/store/bfh60vmi54fshkir5x7i28wqbzlj77fj-gsettings-desktop-schemas-3.28.0/share/gsettings-schemas/gsettings-desktop-schemas-3.28.0:/nix/store/n5ryp9j18r3kp5pzm8jhsa34d25m6wy7-gtk+3-3.22.30/share/gsettings-schemas/gtk+3-3.22.30:/nix/store/j0kslmr2njl81cn1v0292xs4fjgfffdi-nautilus-3.28.1/share/gsettings-schemas/nautilus-3.28.1:/nix/store/rgzydxvigsp2jfdxl5kfws449q9970hc-gnome-terminal-3.28.2/share/gsettings-schemas/gnome-terminal-3.28.2:/run/opengl-driver/share:/home/chris/.nix-profile/share:/nix/var/nix/profiles/default/share:/run/current-system/sw/share:/etc/profiles/per-user/chris/share

environment

STRIGI_PLUGIN_PATH = /home/chris/.nix-profile/lib/strigi/:/nix/var/nix/profiles/default/lib/strigi/:/run/current-system/sw/lib/strigi/:/etc/profiles/per-user/chris/lib/strigi/

environment

GI_TYPELIB_PATH = /nix/store/n5ryp9j18r3kp5pzm8jhsa34d25m6wy7-gtk+3-3.22.30/lib/girepository-1.0:/nix/store/7y7v5n4jcd7i7m80dw52hlr4wkc3d1rc-librsvg-2.42.4/lib/girepository-1.0:/nix/store/xgj5fwrgcpgwjgg0w48hfpi041b87l9m-pango-1.42.4/lib/girepository-1.0:/nix/store/myr7211aysclk97jbqx4j5jcdg0kcnjw-gdk-pixbuf-2.36.12/lib/girepository-1.0:/nix/store/5vcsl5z90zs2dpvws3fh1vzd0x9l0khn-atk-2.28.1/lib/girepository-1.0:/nix/store/bfh60vmi54fshkir5x7i28wqbzlj77fj-gsettings-desktop-schemas-3.28.0/lib/girepository-1.0:/nix/store/n5ryp9j18r3kp5pzm8jhsa34d25m6wy7-gtk+3-3.22.30/lib/girepository-1.0:/nix/store/2xkiybrkc43z7pmizmngyg2vkg5axj47-vte-0.52.2/lib/girepository-1.0:/nix/store/j0kslmr2njl81cn1v0292xs4fjgfffdi-nautilus-3.28.1/lib/girepository-1.0:/nix/store/jybinc27bqsral9837rl3gzc9f8aj4sg-gnome-autoar-0.2.3/lib/girepository-1.0:/nix/store/8nqchqk71xv9b6rswkasc6bflqml95fv-gobject-introspection-1.56.0/lib/girepository-1.0:/nix/store/n5ryp9j18r3kp5pzm8jhsa34d25m6wy7-gtk+3-3.22.30/lib/girepository-1.0:/nix/store/7y7v5n4jcd7i7m80dw52hlr4wkc3d1rc-librsvg-2.42.4/lib/girepository-1.0:/nix/store/xgj5fwrgcpgwjgg0w48hfpi041b87l9m-pango-1.42.4/lib/girepository-1.0:/nix/store/myr7211aysclk97jbqx4j5jcdg0kcnjw-gdk-pixbuf-2.36.12/lib/girepository-1.0:/nix/store/5vcsl5z90zs2dpvws3fh1vzd0x9l0khn-atk-2.28.1/lib/girepository-1.0:/nix/store/bfh60vmi54fshkir5x7i28wqbzlj77fj-gsettings-desktop-schemas-3.28.0/lib/girepository-1.0:/nix/store/n5ryp9j18r3kp5pzm8jhsa34d25m6wy7-gtk+3-3.22.30/lib/girepository-1.0:/nix/store/2xkiybrkc43z7pmizmngyg2vkg5axj47-vte-0.52.2/lib/girepository-1.0:/nix/store/j0kslmr2njl81cn1v0292xs4fjgfffdi-nautilus-3.28.1/lib/girepository-1.0:/nix/store/jybinc27bqsral9837rl3gzc9f8aj4sg-gnome-autoar-0.2.3/lib/girepository-1.0:/nix/store/8nqchqk71xv9b6rswkasc6bflqml95fv-gobject-introspection-1.56.0/lib/girepository-1.0

environment

QT_PLUGIN_PATH = /home/chris/.nix-profile/lib/qt4/plugins:/home/chris/.nix-profile/lib/kde4/plugins:/nix/var/nix/profiles/default/lib/qt4/plugins:/nix/var/nix/profiles/default/lib/kde4/plugins:/run/current-system/sw/lib/qt4/plugins:/run/current-system/sw/lib/kde4/plugins:/etc/profiles/per-user/chris/lib/qt4/plugins:/etc/profiles/per-user/chris/lib/kde4/plugins

environment

INFOPATH = /home/chris/.nix-profile/info:/home/chris/.nix-profile/share/info:/nix/var/nix/profiles/default/info:/nix/var/nix/profiles/default/share/info:/run/current-system/sw/info:/run/current-system/sw/share/info:/etc/profiles/per-user/chris/info:/etc/profiles/per-user/chris/share/info

default

CHECKOUT,v = +$(if $(wildcard $@),,$(CO) $(COFLAGS) $&lt; $@)

environment

LIBEXEC_PATH = /home/chris/.nix-profile/lib/libexec:/nix/var/nix/profiles/default/lib/libexec:/run/current-system/sw/lib/libexec:/etc/profiles/per-user/chris/lib/libexec

default

LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)

environment

XDG_SESSION_PATH = /org/freedesktop/DisplayManager/Session1

default

MAKE_HOST := x86_64-pc-linux-gnu

environment

PATH = /home/chris/.local/bin/:/home/chris/bin:/run/wrappers/bin:/home/chris/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/etc/profiles/per-user/chris/bin

default

LD = ld

default

TEXI2DVI = texi2dvi

environment

LOCALE_ARCHIVE = /run/current-system/sw/lib/locale/locale-archive

environment

INFINALITY_FT = ultimate3

default

COMPILE.mod = $(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)

environment

XDG_RUNTIME_DIR = /run/user/1000

environment

GDK_PIXBUF_MODULE_FILE = /nix/store/7y7v5n4jcd7i7m80dw52hlr4wkc3d1rc-librsvg-2.42.4/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache

default

ARFLAGS = rv

default

LINK.r = $(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)

default

LINT = lint

default

COMPILE.f = $(FC) $(FFLAGS) $(TARGET_ARCH) -c

default

LINT.c = $(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)

default

YACC.m = $(YACC) $(YFLAGS)

environment

NIX_USER_PROFILE_DIR = /nix/var/nix/profiles/per-user/chris

environment

QTWEBKIT_PLUGIN_PATH = /home/chris/.nix-profile/lib/mozilla/plugins/:/nix/var/nix/profiles/default/lib/mozilla/plugins/:/run/current-system/sw/lib/mozilla/plugins/:/etc/profiles/per-user/chris/lib/mozilla/plugins/

default

YACC.y = $(YACC) $(YFLAGS)

default

PREPROCESS.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F

default

AR = ar

default

.FEATURES := target-specific order-only second-expansion else-if shortest-stem undefine oneshell archives jobserver output-sync check-symlink load

default

TANGLE = tangle

environment

XDG_SESSION_DESKTOP =

environment

GITHUB_API_TOKEN = 5bdf1b07e2f409b589763b340775d03a79803168

default

GET = get

automatic

%F = $(notdir $%)

environment

KDEDIRS = /home/chris/.nix-profile:/nix/var/nix/profiles/default:/run/current-system/sw:/etc/profiles/per-user/chris

environment

DISPLAY = :0

default

COMPILE.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c

environment

XCURSOR_PATH = /home/chris/.icons:/home/chris/.nix-profile/share/icons:/nix/var/nix/profiles/default/share/icons:/run/current-system/sw/share/icons:/etc/profiles/per-user/chris/share/icons

default

CTANGLE = ctangle

environment

__ETC_PROFILE_DONE = 1

environment

HOME = /home/chris

default

.LIBPATTERNS = lib%.so lib%.a

default

LINK.C = $(LINK.cc)

environment

PWD = /home/chris/Haskell/AstatineAlphaAvocado/frp-arduino

default

.LOADED :=

default

LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)

environment

XDG_SEAT = seat0

environment

GTK_PATH = /home/chris/.nix-profile/lib/gtk-2.0:/home/chris/.nix-profile/lib/gtk-3.0:/nix/var/nix/profiles/default/lib/gtk-2.0:/nix/var/nix/profiles/default/lib/gtk-3.0:/run/current-system/sw/lib/gtk-2.0:/run/current-system/sw/lib/gtk-3.0:/etc/profiles/per-user/chris/lib/gtk-2.0:/etc/profiles/per-user/chris/lib/gtk-3.0

default

LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)

default

LINK.s = $(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH)

environment

DBUS_SESSION_BUS_ADDRESS = unix:abstract=/tmp/dbus-JzthXTRqnh,guid=fe8e57c527664edba32d1d3f5cb1d521

environment

LD_LIBRARY_PATH = /run/opengl-driver/lib

environment

LOGNAME = chris

automatic

+F = $(notdir $+)

default

M2C = m2c

environment

GTK_DATA_PREFIX = /nix/store/b8ailgzkc5sbbhiz6izsylrjaf198788-system-path

default

CO = co

automatic

^D = $(patsubst %/,%,$(dir $^))

environment

XDG_VTNR = 7

environment

MAKELEVEL := 0

default

COMPILE.m = $(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c

environment

SSH_ASKPASS = /nix/store/p74iqqs165jwjxkbhp5383ia0h76l4ks-x11-ssh-askpass-1.2.4.1/libexec/x11-ssh-askpass

environment

COLORTERM = truecolor

default

MAKE = $(MAKE_COMMAND)

default

MAKECMDGOALS := Blink upload

environment

SHLVL = 3

environment

NIX_PATH = /home/chris/.nix-defexpr/channels:nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels

environment

NIX_PROFILES = /etc/profiles/per-user/chris /run/current-system/sw /nix/var/nix/profiles/default /home/chris/.nix-profile

default

AS = as

default

PREPROCESS.S = $(CC) -E $(CPPFLAGS)

default

COMPILE.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c

environment

XDG_SESSION_ID = 2

environment

USER = chris

default

FC = f77

makefile

.DEFAULT_GOAL :=

environment

XDG_CURRENT_DESKTOP =

automatic

%D = $(patsubst %/,%,$(dir $%))

default

CPP = $(CC) -E

default

WEAVE = weave

default

MAKE_COMMAND := make

default

LINK.cpp = $(LINK.cc)

default

F77 = $(FC)

environment

OLDPWD = /home/chris/Haskell/AstatineAlphaAvocado/frp-arduino/makefiles

default

.VARIABLES :=

default

PC = pc

automatic

F = $(notdir $)

environment

XDG_SEAT_PATH = /org/freedesktop/DisplayManager/Seat0

default

COMPILE.def = $(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)

default

LEX = lex

makefile

MAKEFLAGS = np

environment

MFLAGS = -np

automatic

D = $(patsubst %/,%,$(dir $))

default

LEX.l = $(LEX) $(LFLAGS) -t

default

LEX.m = $(LEX) $(LFLAGS) -t

automatic

+D = $(patsubst %/,%,$(dir $+))

default

COMPILE.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c

environment

BOARD = Uno

environment

NO_AT_BRIDGE = 1

environment

TERMINFO_DIRS = /home/chris/.nix-profile/share/terminfo:/nix/var/nix/profiles/default/share/terminfo:/run/current-system/sw/share/terminfo:/etc/profiles/per-user/chris/share/terminfo

default

CC = cc

environment

TZDIR = /etc/zoneinfo

environment

GITHUB_USER = chrissound

default

MAKEFILES :=

default

YACC = yacc

default

COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c

automatic

<F = $(notdir $&lt;)

default

CXX = g++

default

COFLAGS =

environment

EDITOR = nvim

environment

PAGER = less -R

default

COMPILE.C = $(COMPILE.cc)

environment

GNOME_TERMINAL_SCREEN = /org/gnome/Terminal/screen/9d8c856e_b747_4cad_bb7d_28b6d866e22d

automatic

^F = $(notdir $^)

default

COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c

default

LINK.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)

environment

GNOME_TERMINAL_SERVICE = :1.55

default

SUFFIXES := .out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo .w .ch .web .sh .elc .el

default

COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c

default

COMPILE.s = $(AS) $(ASFLAGS) $(TARGET_MACH)

environment

MOZ_PLUGIN_PATH = /home/chris/.nix-profile/lib/mozilla/plugins:/nix/var/nix/profiles/default/lib/mozilla/plugins:/run/current-system/sw/lib/mozilla/plugins:/etc/profiles/per-user/chris/lib/mozilla/plugins

default

.INCLUDE_DIRS = /nix/store/8m2ld502dsx6rbsvv05597qzxha4cnc1-gnumake-4.2.1/include

environment

GIO_EXTRA_MODULES = /nix/store/ka37r5lv7p9j4lary3n0bih4yhzlzj99-dconf-0.28.0-lib/lib/gio/modules:/nix/store/ka37r5lv7p9j4lary3n0bih4yhzlzj99-dconf-0.28.0-lib/lib/gio/modules:/nix/store/ka37r5lv7p9j4lary3n0bih4yhzlzj99-dconf-0.28.0-lib/lib/gio/modules:/nix/store/ka37r5lv7p9j4lary3n0bih4yhzlzj99-dconf-0.28.0-lib/lib/gio/modules:/nix/store/ka37r5lv7p9j4lary3n0bih4yhzlzj99-dconf-0.28.0-lib/lib/gio/modules

default

.RECIPEPREFIX :=

default

MAKEINFO = makeinfo

default

MAKE_TERMERR := /dev/pts/3

default

OBJC = cc

default

LINK.f = $(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)

default

TEX = tex

environment

LANG = en_US.UTF-8

environment

TERM = xterm-256color

default

F77FLAGS = $(FFLAGS)

default

LINK.o = $(CC) $(LDFLAGS) $(TARGET_ARCH)

variable set hash-table stats:

Load=160/1024=16%, Rehash=0, Collisions=24/182=13%

Pattern-specific Variable Values

No pattern-specific variable values.

Directories

SCCS: could not be stat'd.

. (device 66307, inode 3058513): 21 files, 76 impossibilities.

RCS: could not be stat'd.

21 files, 76 impossibilities in 3 directories.

Implicit Rules

%.out:

%.a:

%.ln:

%.o:

%: %.o

recipe to execute (built-in):

$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.c:

%: %.c

recipe to execute (built-in):

$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.ln: %.c

recipe to execute (built-in):

$(LINT.c) -C$* $<

%.o: %.c

recipe to execute (built-in):

$(COMPILE.c) $(OUTPUT_OPTION) $<

%.cc:

%: %.cc

recipe to execute (built-in):

$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.cc

recipe to execute (built-in):

$(COMPILE.cc) $(OUTPUT_OPTION) $<

%.C:

%: %.C

recipe to execute (built-in):

$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.C

recipe to execute (built-in):

$(COMPILE.C) $(OUTPUT_OPTION) $<

%.cpp:

%: %.cpp

recipe to execute (built-in):

$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.cpp

recipe to execute (built-in):

$(COMPILE.cpp) $(OUTPUT_OPTION) $<

%.p:

%: %.p

recipe to execute (built-in):

$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.p

recipe to execute (built-in):

$(COMPILE.p) $(OUTPUT_OPTION) $<

%.f:

%: %.f

recipe to execute (built-in):

$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.f

recipe to execute (built-in):

$(COMPILE.f) $(OUTPUT_OPTION) $<

%.F:

%: %.F

recipe to execute (built-in):

$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.F

recipe to execute (built-in):

$(COMPILE.F) $(OUTPUT_OPTION) $<

%.f: %.F

recipe to execute (built-in):

$(PREPROCESS.F) $(OUTPUT_OPTION) $<

%.m:

%: %.m

recipe to execute (built-in):

$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.m

recipe to execute (built-in):

$(COMPILE.m) $(OUTPUT_OPTION) $<

%.r:

%: %.r

recipe to execute (built-in):

$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.r

recipe to execute (built-in):

$(COMPILE.r) $(OUTPUT_OPTION) $<

%.f: %.r

recipe to execute (built-in):

$(PREPROCESS.r) $(OUTPUT_OPTION) $<

%.y:

%.ln: %.y

recipe to execute (built-in):

$(YACC.y) $< 
 $(LINT.c) -C$* y.tab.c 
 $(RM) y.tab.c

%.c: %.y

recipe to execute (built-in):

$(YACC.y) $< 
 mv -f y.tab.c $@

%.l:

%.ln: %.l

recipe to execute (built-in):

@$(RM) $*.c
 $(LEX.l) $< > $*.c
$(LINT.c) -i $*.c -o $@
 $(RM) $*.c

%.c: %.l

recipe to execute (built-in):

@$(RM) $@ 
 $(LEX.l) $< > $@

%.r: %.l

recipe to execute (built-in):

$(LEX.l) $< > $@ 
 mv -f lex.yy.r $@

%.ym:

%.m: %.ym

recipe to execute (built-in):

$(YACC.m) $< 
 mv -f y.tab.c $@

%.yl:

%.s:

%: %.s

recipe to execute (built-in):

$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.s

recipe to execute (built-in):

$(COMPILE.s) -o $@ $<

%.S:

%: %.S

recipe to execute (built-in):

$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.S

recipe to execute (built-in):

$(COMPILE.S) -o $@ $<

%.s: %.S

recipe to execute (built-in):

$(PREPROCESS.S) $< > $@

%.mod:

%: %.mod

recipe to execute (built-in):

$(COMPILE.mod) -o $@ -e $@ $^

%.o: %.mod

recipe to execute (built-in):

$(COMPILE.mod) -o $@ $<

%.sym:

%.def:

%.sym: %.def

recipe to execute (built-in):

$(COMPILE.def) -o $@ $<

%.h:

%.info:

%.dvi:

%.tex:

%.dvi: %.tex

recipe to execute (built-in):

$(TEX) $<

%.texinfo:

%.info: %.texinfo

recipe to execute (built-in):

$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

%.dvi: %.texinfo

recipe to execute (built-in):

$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

%.texi:

%.info: %.texi

recipe to execute (built-in):

$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

%.dvi: %.texi

recipe to execute (built-in):

$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

%.txinfo:

%.info: %.txinfo

recipe to execute (built-in):

$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

%.dvi: %.txinfo

recipe to execute (built-in):

$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

%.w:

%.c: %.w

recipe to execute (built-in):

$(CTANGLE) $< - $@

%.tex: %.w

recipe to execute (built-in):

$(CWEAVE) $< - $@

%.ch:

%.web:

%.p: %.web

recipe to execute (built-in):

$(TANGLE) $<

%.tex: %.web

recipe to execute (built-in):

$(WEAVE) $<

%.sh:

%: %.sh

recipe to execute (built-in):

cat $< >$@ 
 chmod a+x $@

%.elc:

%.el:

(%): %

recipe to execute (built-in):

$(AR) $(ARFLAGS) $@ $<

%.out: %

recipe to execute (built-in):

@rm -f $@ 
 cp $< $@

%.c: %.w %.ch

recipe to execute (built-in):

$(CTANGLE) $^ $@

%.tex: %.w %.ch

recipe to execute (built-in):

$(CWEAVE) $^ $@

%:: %,v

recipe to execute (built-in):

$(CHECKOUT,v)

%:: RCS/%,v

recipe to execute (built-in):

$(CHECKOUT,v)

%:: RCS/%

recipe to execute (built-in):

$(CHECKOUT,v)

%:: s.%

recipe to execute (built-in):

$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<

%:: SCCS/s.%

recipe to execute (built-in):

$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<

92 implicit rules, 5 (5.4%) terminal.

Files

Not a target:

.web.p:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(TANGLE) $<

Not a target:

.l.r:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LEX.l) $< > $@ 
 mv -f lex.yy.r $@

Not a target:

.dvi:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.ym:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.f.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.f) $(OUTPUT_OPTION) $<

Not a target:

Blink:

Command line target.

Implicit rule search has been done.

File does not exist.

File has not been updated.

Not a target:

.l:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.m:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.ln:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.y:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.def.sym:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.def) -o $@ $<

Not a target:

.p.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.p) $(OUTPUT_OPTION) $<

Not a target:

.p:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.txinfo.dvi:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

Not a target:

.a:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.yl:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.l.ln:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

@$(RM) $*.c
 $(LEX.l) $< > $*.c
$(LINT.c) -i $*.c -o $@
 $(RM) $*.c

Not a target:

.F.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.F) $(OUTPUT_OPTION) $<

Not a target:

.texi.info:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

Not a target:

.w.c:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(CTANGLE) $< - $@

Not a target:

.texi.dvi:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

Not a target:

.ch:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.m.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.m) $(OUTPUT_OPTION) $<

Not a target:

.cc:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.cc.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.cc) $(OUTPUT_OPTION) $<

Not a target:

.def:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.SUFFIXES: .out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo .w .ch .web .sh .elc .el

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.c.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.c) $(OUTPUT_OPTION) $<

Not a target:

Makefile:

Implicit rule search has been done.

File does not exist.

File has been updated.

Failed to be updated.

Not a target:

.r.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.r) $(OUTPUT_OPTION) $<

Not a target:

.r:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.ym.m:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(YACC.m) $< 
 mv -f y.tab.c $@

Not a target:

.y.ln:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(YACC.y) $< 
 $(LINT.c) -C$* y.tab.c 
 $(RM) y.tab.c

Not a target:

makefile:

Implicit rule search has been done.

File does not exist.

File has been updated.

Failed to be updated.

Not a target:

.elc:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.l.c:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

@$(RM) $@ 
 $(LEX.l) $< > $@

Not a target:

.out:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.C:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.r.f:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(PREPROCESS.r) $(OUTPUT_OPTION) $<

Not a target:

.S:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.texinfo.info:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

Not a target:

.c:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.w.tex:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(CWEAVE) $< - $@

Not a target:

.c.ln:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINT.c) -C$* $<

Not a target:

.s.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.s) -o $@ $<

Not a target:

.s:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.texinfo.dvi:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

Not a target:

.el:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.lm.m:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

@$(RM) $@ 
 $(LEX.m) $< > $@

Not a target:

.y.c:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(YACC.y) $< 
 mv -f y.tab.c $@

Not a target:

.web.tex:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(WEAVE) $<

Not a target:

.texinfo:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.DEFAULT:

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.h:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.tex.dvi:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(TEX) $<

Not a target:

.cpp.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.cpp) $(OUTPUT_OPTION) $<

Not a target:

.cpp:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.C.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.C) $(OUTPUT_OPTION) $<

Not a target:

.texi:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.txinfo:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.tex:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.txinfo.info:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

Not a target:

GNUmakefile:

Implicit rule search has been done.

File does not exist.

File has been updated.

Failed to be updated.

Not a target:

.sh:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

cat $< >$@ 
 chmod a+x $@

Not a target:

.S.s:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(PREPROCESS.S) $< > $@

Not a target:

.mod:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.mod) -o $@ -e $@ $^

Not a target:

.mod.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.mod) -o $@ $<

Not a target:

.F.f:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(PREPROCESS.F) $(OUTPUT_OPTION) $<

Not a target:

.w:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.S.o:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(COMPILE.S) -o $@ $<

Not a target:

.F:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

upload:

Command line target.

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.web:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.sym:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

Not a target:

.f:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

recipe to execute (built-in):

$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@

Not a target:

.info:

Builtin rule

Implicit rule search has not been done.

Modification time never checked.

File has not been updated.

files hash-table stats:

Load=77/1024=8%, Rehash=0, Collisions=522/1941=27%

VPATH Search Paths

No 'vpath' search paths.

No general ('VPATH' variable) search path.

strcache buffers: 1 (0) / strings = 618 / storage = 8026 B / avg = 12 B

current buf: size = 8162 B / used = 8026 B / count = 618 / avg = 12 B

strcache performance: lookups = 1020 / hit rate = 39%

hash-table stats:

Load=618/8192=8%, Rehash=0, Collisions=262/1020=26%

Finished Make data base on Wed Apr 17 22:23:04 2019

</details>

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.