Code Monkey home page Code Monkey logo

philmoe / cerberus Goto Github PK

View Code? Open in Web Editor NEW
206.0 15.0 31.0 85.01 MB

Cerberus X - A cross platform game programming language.

Home Page: https://www.cerberus-x.com

License: Other

BlitzMax 0.11% Java 0.95% C++ 21.60% ActionScript 0.30% C# 0.57% JavaScript 2.73% C 70.06% Shell 0.37% QMake 0.13% Batchfile 0.01% Makefile 0.04% Objective-C 2.01% Objective-C++ 0.01% HTML 0.07% CMake 0.10% M 0.07% HLSL 0.02% GLSL 0.11% PowerShell 0.25% CSS 0.49%
monkey cerberus-x programming-language game-dev gamedev android cross-platform html5 indiegamedev ios

cerberus's Introduction

Cerberus X

Twitter Follow GitHub stars

Cerberus X Logo

Cerberus X is a game development language, made for hobbyists, indies and professionals.

With Cerberus X anyone can code and build games and apps for multiple platforms very fast. Only very little code is needed to have your creations up and running on supported devices (Windows/Linux/Mac, Android, iOS, HTML5) in no time.

Introduction

Cerberus X is based on Monkey X programming language created by Mark Sibly/Blitz Research Ltd.

Useful links

Important: We are currently working on the new forum and homepage. In the meantime you can visit the temporary readonly version of the old forum Mike set up thankfully.

License

Cerberus X code is published under zlib/libpng license.

HTML5 Demos

Very simple accelerometer demo!

Angel font example

A simple audio test app

BB Game test

Draw bezier curves

Bouncy aliens

Bump test

Champagne

Clock

Config demo

Degree and radian

Direct light

Draw primitives

A test of offset, pitch, byte order etc

Target exclusion

File IO test

Firepaint

Follow mouse

FPS test

Gamepad

GLES 20 cube

GLFW diffusion example

Hello World

Hilbert

Horsey

HTTP request

ifacetest

ifacetest

joytest

json

jsonstream

Keyboard test

Letterbox

Live vs circle collision

Mac OS menu

Matchup game

Mirror FX transform

Mojo test

Monkenstein

Monkey puzzle

Pegs

render draw list

render demo

Render to image

Rotating objects

Shader effect

Simple verlet physics

Smooth scroll

Spiral matrix

Suspend test

Text effect

Tile image

Transform

Transform mouse

Tween demo

Write pixels

cerberus's People

Contributors

0xc1c4da avatar adamredwoods avatar dawlane avatar devolonter avatar fightlessbirds avatar holzchopf avatar krautapps avatar loongruige avatar mikehart66 avatar neojaw avatar nobuyukinyuu avatar ootsby avatar pantson avatar paul59 avatar philmoe avatar pixelpaladin avatar si-design avatar subsoap avatar ziggybcn avatar zomagic 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

cerberus's Issues

MOJO2 DRAWTEXT IMAGECANVAS NOT WORKING CORRECTLY

From the Monkey-X forum by user Pakz:

When using the drawtext command in the onrender on imagecanvasses it does not work in html5 but it does work in glfw.


Import mojo2

Global canvas:Canvas
Global image:Image
Global imagecanvas:Canvas
Global image2:Image
Global imagecanvas2:Canvas
Global image3:Image
Global imagecanvas3:Canvas

Class MyApp Extends App
	Field refresh:Int
	Method OnCreate()
		canvas=New Canvas
		image=New Image(128,64,0,0)
		image2=New Image(128,64,.5,.5)
		image3=New Image(238,64,1,1)
		imagecanvas=New Canvas(image)		
		imagecanvas2=New Canvas(image2)		
		imagecanvas3=New Canvas(image3)						
		createimages()
		createimages()		
		SetUpdateRate(60)
	End Method
	Method OnUpdate()
	End Method
	Method OnRender()
		canvas.Clear 0,0,0
		canvas.DrawImage image,DeviceWidth()/2,50
		canvas.DrawImage image2,DeviceWidth()/2,50+96
		canvas.DrawImage image3,DeviceWidth()/2,50+(96*2)
		canvas.Flush
	End
End Class

Function createimages()
	imagecanvas.Clear
	imagecanvas.SetColor(0.1,0.1,0.1,1)
	imagecanvas.DrawRect(0,0,image.Width(),image.Height())
	imagecanvas.SetColor(1,1,1)
	imagecanvas.DrawText("Image...1",0,0)	
	imagecanvas.Flush
	imagecanvas2.Clear
	imagecanvas2.SetColor(1,1,1,1)
	imagecanvas2.DrawRect(0,0,image.Width(),image.Height())
	imagecanvas2.SetColor(0,0,0,1)
	imagecanvas2.DrawText("Image...2",0,0)	
	imagecanvas2.Flush
	imagecanvas3.Clear
	imagecanvas3.SetColor(1,1,1,1)
	imagecanvas3.DrawRect(0,0,image.Width(),image.Height())
	imagecanvas3.SetColor(0,0,0,1)
	imagecanvas3.DrawText("Image...3",0,0)	
	imagecanvas3.Flush
End Function

Function Main()
	New MyApp
End

Here the original link in the beginners forum : http://www.monkey-x.com/Community/posts.php?topic=10553

Crash in BeginRender/EndRender

From the Monkey-X forum by user Maverick69:

When I'm using AppODeal 3rd Party SDK to show video ads, monkey crashes in the following lines because the MonkeyAppDelegate isn't found:

int gxtkGraphics::BeginRender(){
	MonkeyAppDelegate *appDelegate=(MonkeyAppDelegate*)[[UIApplication sharedApplication] delegate];
	width=appDelegate->view->backingWidth;

MonkeyAppDelegate *appDelegate=(MonkeyAppDelegate*)[[UIApplication sharedApplication] delegate];
	[appDelegate->view presentRenderbuffer];

I've replaced the code through the following lines which fixed the crash:

int gxtkGraphics::BeginRender(){

    BBMonkeyAppDelegate *appDelegate = BBIosGame::IosGame()->GetUIAppDelegate();
	width=appDelegate->view->backingWidth;

void gxtkGraphics::EndRender(){
	if( !CFG_OPENGL_GLES20_ENABLED ) Flush();
    BBMonkeyAppDelegate *appDelegate=BBIosGame::IosGame()->GetUIAppDelegate();
	[appDelegate->view presentRenderbuffer];
}

HTML5 (Samsung S3/Android Browser): Databuffer Bug

For the Monkey-X forum by user Maverick:

The Android Browser in my Samsung Galaxy S3 (Android 4.4.2) does have a
problem that I haven't encountered in other Browsers:

Creating a buffer view with an buffer that has a size that isn't a multiple of the base type creates an Exception:

ArrayBuffer length minus the byteOffset is not a multiple of the element size

This happened to me in a game where I'm loading a Binary File. Of course it is possible that the size of this Binary File isn't a multiple of 4.

Now when Monkey tries to load in the File into a DataBuffer object the above-mentioned Exception is thrown.

I've created a workaround in this pull request (blitz-research/monkey#93) because I weren't able to come up with a cleaner solution:

If the length of the buffer isn't a multiple of 4, I copy/resize the buffer to be a multiple of 4 in length.

Note: I keep the original length property so that the seeking logic remains the same.

Remove 4 permissions from Android app manifest by default

Unless the developer goes in and modifies Cerberus-X's source code for Android it always includes 4 permissions. In my opinion they are important ones too. If the developer needs to add permissions to the game they are making, they can use ${ANDROID_MANIFEST_MAIN}

https://github.com/cerberusxdev/cerberus/blob/develop/targets/android/template/gradletemplate/app/src/main/AndroidManifest.xml#L7

android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

Read / write external storage should never be used by games ever. If they have a save file backup system (and they always really should...), it'd be better to use the Storage Access Framework (Android 4.4+) or the system clipboard. Apps that require the internet permission but don't use it really chaps my hide too.

What do you think? May I do a PR for this?

Setting MinGW desktop as a target on Linux.

I have a question/documentation issue and I am not seeing it anywhere so I'd like to know. When you run a binary of Cerberus X on any Linux host, the available target options are usually Android, HTML5 and the Linux target, both debug and release. However, according to this topic here https://www.cerberus-x.com/community/index.php?threads/crosscompiling.1493/

It seems like crosscompiling from one platform to another is possible. As the title of my post implies, I am seeing if compiling from Linux to Windows through MinGW could be possible. As per the official site at (https://mingw.osdn.io/) it is possible to build and run MinGW on a Linux host and generate binaries from there. As Cerberus X already has MinGW support, could this be extended to apply to Linux as well? So that a workflow of: HTML5, mobile, Linux and Windows could be there in one go? Of course as long as the user has provided their own MinGW compiler.

Hello! I would like to ask about one of the modules used in Cerberus

Hey! I would like to ask something. See, we are trying to get Cerberus-X on the FSF directory-listing, and we are looking at adding this project to the directory. After some discussion, we found this module here that looked concerning
https://github.com/PhilMoe/cerberus/blob/develop/modules/opengl/gl.h

The license seems to be explicitly forbidding the sharing and usage of this header and we found this quite strange as gl2.h allows redistribution of it so if possible, we would like some clarification on what's happening with this header and if any info could be provided.

Cheers!
MetalMaxMX

Mojo2 possible light bug

For the Monkey-X forum by user Xaron:

Hey Mark, in your mojo2/graphics.monkey module I found this:

Method Init:Void()
		_dirty=-1
		For Local i:=0 Until 4
			_lights[i]=New LightData
		Next
	End

Should the for loop not initialize till MAX_LIGHTS and not just to 4, so something like:

For Local i:=0 Until MAX_LIGHTS


like everywhere else?

Because a few lines below I see a potential access violation then when you have more than 4 lights:

Local light:=_lights[i]

Build instructions

Hi Phil

Are there any build instructions fro Linux around? I see the website/forum is no longer active and the instructions here on github are a bit too vague for my level of knowledge!

Cheers

Paul

Android: Enhance the Docs on building an app

The documentation needs to be enhanced regarding the building process and settings for Android Apps. For an example:

  • How to change the icons
  • How to add permissions or libraries

Mojo2.graphics LoadFrames - padding not working correctly

When specifiying cellWidth and cellHeight and padding=true, the offset in the y is not taken into account

	Function LoadFrames:Image[]( path:String,cellWidth:Int,cellHeight:Int,padded:Bool=False,xhandle:Float=.5,yhandle:Float=.5,flags:Int=Image.Filter|Image.Mipmap,shader:Shader=Null )

fix: (added y and height just like x and width)

		Local x:=0,width:=cellWidth
		Local y:=0,height:=cellHeight
		If padded x+=1;width-=2;y+=1;height-=2
		
		Local tx:Int = material.Width/cellWidth
		Local ty:Int = material.Height/cellHeight
		Local frames := New Image[tx*ty]
		Local i:Int = 0
		For Local yi:Int = 0 To ty-1
			For Local xi:Int = 0 To tx-1
				frames[i]=New Image( material,xi*cellWidth+x,yi*cellHeight+y,width,height,xhandle,yhandle )

Touch input bug with iOS 10

For the Monkey-X forum by user Peeling:

After upgrading (?) our test devices to iOS10, all our apps have started exhibiting the same problem:

In a ~1cm strip down the left hand edge (portrait), static touch input is only registered after pressing the screen continuously for ~1 second. Swipes are registered instantly.

I've tried logging out the result from TouchDown directly. If I don't touch the screen, it's zero. If I touch the screen outside that 1cm strip, it instantly changes to 1. If I swipe the screen inside that strip, it instantly changes to 1. But if I statically touch the screen inside that strip, it takes a continuous press of ~1 second before the output changes to 1.

This is a pretty big deal as we have a few buttons that live in that left hand strip and now give the impression of being unresponsive.

Remove the App Compat Library from Android and save over 5.5MB

Just comment out the one line that imports the app compat library, and the base size of a game will go from 6.25MB to 668KB (based on the bouncy aliens example when installed on my phone).

There should probably be a way to include it again using the config.cxs file.

https://github.com/cerberusxdev/cerberus/blob/develop/targets/android/template/gradletemplate/app/build.gradle#L45

Dead code really gets on my nerves. ha ha

What do you think of this? I'd like to do a PR for this.

Desktop target docs incorrect - VS2013 vs VS2017/2019?

The Desktop target for Windows talks about using VS Express 2013 with Update 4... at time of writing Update 5 is the latest, but if you manage to find and download VS Express 2013, builds will fail.

The project\project.buildv2020-05-09\glfw3\msvc\CerberusGame.vcxproj file generated will refer to the 141 build dependencies of MSBuild which is... VS2017? As these don't get installed with VS2013, there's a bit of headscratching involved.

Not sure which is the preferred route here, whether to document how to fix the project file so VS2013 works (easy enough, in the vcxproj file, just find <PlatformToolset> in both the debug and release builds and replace with v120 instead of v141) or, probably, the better route to update the docs to suggest whichever version of VS Express/Community/whatever is the build the CX devs themselves are using.

Mojo2 color doesnt allow floats if you import mojo2.graphics first

If you import mojo2, #COLOR_USE_NORMALISED_COMPONENTS is inititalised which allows floats in Color. If you import mojo2.graphics, #COLOR_USE_NORMALISED_COMPONENTS isnt initialised and floats arent allowed. It might not be a bug and import mojo2 might be the documented way, rather than import mojo2.graphics.
For my project I didnt want to include mojo.audio, but I can see most game projects do want to include all mojo components

Import mojo2.graphics
col = New Color(Rnd(),Rnd(),Rnd())
' always 0
Print col.r

WritePixel / DrawImage not displaying alpha - mojo2

When writing (alpha shl 24 + $ffffff) to a databuffer and then writing that to an img, when drawn it doesnt display the alpha and just draws solid.
This happens in GLFW and HTML targets

The attached demo,will set the image to either RED GREEN BLUE or WHITE and draw it to the screen. (press R G B or W for the relevant image). This image is drawn on the left

In data there is also an image it loads that is set to WHITE with variable alpha. This draws correctly. See the right of the screen

This seems to only happen when using $FFFFFF white
test_writepixel.zip

API to Get Names and Axis/Button Count of Game Controllers

Being able to get the display name and button/axis count of a controller would be really nice to have. It should be pretty easy to put in.

GLFW: glfwGetJoystickName(), glfwGetJoystickButtons(), glfwGetJoystickAxes()
HTML5: gamepad.id, gamepad.buttons.length, gamepad.axes.length
Android: InputDevice.getName(), It looks like Cerberus uses hard coded button/axis counts on Android.

Add Linux to The Desktop target.cerberusdoc

I'd like to add a link for Linux on "The Desktop target.cerberusdoc" to the installation and build requirements guide. https://www.cerberus-x.com/community/index.php?threads/install-and-build-requirements-for-linux-includes-raspbery-pi-updated.741/

Also move up the "Notes" section, so that it is with the rest of the Windows information.

As a beginner these changes would have saved me a bit of time.

File:
https://github.com/cerberusxdev/cerberus/blob/develop/docs/cerberusdoc/Target%20SDKs/The%20Desktop%20target.cerberusdoc

Proposed Changes:
GrantOjanen@776cf43#diff-aa190177179f157f4f3d36e69263ff3db9031c668c37f4f74c9075cbd0a12b48

ANDROID: GooglePlay 64-bit requirement

Iā€™d like to contribute to cerberusX.
I manage to compile 64bit liblangutil NDK library for 64bit android.
It should be in our android target ..targets\android\template\gradletemplate\app\src\main\jnilibs

Mojo2.font.Load dont allow image filters to be passed in

Currently font.load loads in font image sheets with default filter. This means that scaling a font is always filtered. It be nice to pass in the image filter
Example - Turn off filtering while loading font
fnt = Font.Load(file,0)

in mojo2.graphics.font
line 1380 Function Load:Font(url:String,flags:Int=Image.Filter)
line1453 _pages[pageNum] = Image.Load(filename,0,0,flags)

HTML5/Firefox: Umlauts

For the Monkey-X forum by user Maverick:

On FireFox keyevents with umlauts are fireing with keycode '0'. Those events shouldn't get eaten by Monkey or we won't receive those events within monkey (KeyDown works - GetChar doesn't work).

Here is my pull request:

blitz-research/monkey#91

Error when I compile for linux [Directory transcc.build not exists]

When compiling this showed an error:
g++: error: transcc/transcc.build/cpptool/main.cpp: No such file or directory
I compared this version of Cerberus with an anterior version, this directory transcc.build exists in an anterior version but not exists in the new version.

Bracket nesting level exceeded maximum of 256

For the Monkey-X forum by user JaviCervera:

When compiling an application for the GLFW3 target on macOS, I get the following error:

"fatal error: bracket nesting level exceeded maximum of 256"

This seems to happen because I have a VERY long Select statement that is expanded into a set of indented if else blocks in the generated C++ code.

I tried adding this to the top of my program:

#CC_OPTS+="-fbracket-depth=1024"

But it didn't work because it seems that CC_OPTS is only taken into account in the C++ Tool target (which is a shame, it would be great to be able to specify additional compile options on any C++ targets).

Sound problem on IOS

For the Monkey-X forum by user Pit:

Dear,

some sound function don't work anymore on IOS.
here are the message I recieved on Xcode:

'AudioSessionInitialize' is deprecated: first deprecated in iOS 7.0
'AudioSessionSetProperty' is deprecated: first deprecated in iOS 7.0
'AudioSessionSetActive' is deprecated: first deprecated in iOS 7.0

For this code:

gxtkAudio::gxtkAudio():musicState(0),musicPlayer(0),musicVolume(1){

// BMH - set the session category to ambient (works with other music apps)
AudioSessionInitialize( NULL,NULL,NULL,NULL );
UInt32 sessionCategory=kAudioSessionCategory_AmbientSound;
AudioSessionSetProperty( kAudioSessionProperty_AudioCategory,sizeof(sessionCategory),&sessionCategory );
UInt32 allowMixWithOthers=true;
AudioSessionSetProperty( kAudioSessionProperty_OverrideCategoryMixWithOthers,sizeof(allowMixWithOthers),&allowMixWithOthers );
AudioSessionSetActive( true );

What can I do in order to play music ?

Pit

one precision: now it works (I think I used an old version of my code :-/ ), but I still have the messages as Alert.
So I suppose this must be taken in account for future release of Monkey...

Pit

Build process breaks on latest Android tools

From the Monkey-X forum by user SOAP:

BUILD FAILED
_mainfile.buildv87a\android\build.xml:83: Cannot find \Android\sdk\tools\ant\build.xml imported from _mainfile.buildv87a\android\build.xml

Total time: 0 seconds
TRANS FAILED: Android build failed.
Abnormal program termination.
Exit code: -1

It looks like in latest they completely removed the ant stuff, expects you to only build gradle projects.

We really need an official gradle project based Android target.

https://developer.android.com/studio/releases/sdk-tools.html

Last good tools for Monkey Android builds using ant

https://dl.google.com/android/repository/tools_r25.2.5-windows.zip

https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip

https://dl.google.com/android/repository/tools_r25.2.5-linux.zip

OSX: Launcher needs to be 64bit

With OSX Catalina, applications have to be 64bit. So the launcher has to be rebuild as a 64bit app. This can be done via BMax-NG or maybe it can be converted to a CX app.

GLFW: App crashes when clicking on window minimize (32 bit)

https://www.cerberus-x.com/community/threads/app-crashes-when-clicking-on-window-minimize-32-bit.484/

User Phil7 wrote:

Hi,
my app crashes with a memory access error (error shown only with build and run)
when I click on the minimize Icon of the window or when I try to resize the window.

You can reproduce it with examples\mojo\difference\clock (didn't try any other examples)

I built once and changed #GLFW_GCC_MSIZE_WINNT="32" in config. cxs
Click on the edge of the window to resize (if enabled) or on the minimize icon.

Btw it works fine in debug mode
I am on Windows 10
Using cerberus v2018-04-21 and v2018-03-02

Non-radian trig functions - no double precision

For the Monkey-X forum by user Gerry Quinn:

#CPP_DOUBLE_PRECISION_FLOATS=True
Print

"Cos " + Cos( 90.0 )
Print "Cosr " + Cosr( 3.141592653589793 / 2.0 )

Output:
Cos 1.2167964475066282e-08
Cosr 6.123233995736766e-17

I'm guessing there must be an explicit float conversion done internally in translation that evades the C++ compiler.

EDIT: The constants in monkey.math could become an issue with double precision too, if people don't know they are SP

HTML5 (S4Mini/Android Browser): Audio Bug

For the Monkey-X forum by user Maverick:

On Samsung Devices (on my Galaxy S4Mini) playing a sound effect sometimes results in a crash, throwing the following Exception:

InvalidStateError: DOM Exception 11

I've found out that it could happen that chan.waSource.stop( 0 ) throws this exception. However, as far as I understand the source, this happens if stop is called twice or when waSource Object isn't playing. So this if-branch shouldn't be reached, but it does.

I've fixed it by catching the exception and ignoring it, which is fine in this case.

I'm sure there must be a more cleaner solution, but I wasn't able to find one. This fix worked fine for me.

My bugfix pull request is here: blitz-research/monkey#92

GLFW: GL_STENCIL_TEST NO LONGER WORKING

From the Monkey-X forum by user Nobuyuki:

Hello,

I don't know when this happened, but on my Windows 10 machine, the glfw target doesn't seem to want to cooperate and let me do arbitrary stencil operations. Example code can be downloaded here:

https://github.com/nobuyukinyuu/nDrawExts2

Check the screenshot on the Github page for what the arbitrary stencil SHOULD look like. When compiling to Android (API_10), the code works just like in the screenshot, and in previous versions of Monkey, this also worked (although needed a bit of a workaround to get it to work on MacOS; re-initializing the window with 8 bit depth allocated to the stencil buffer, I'm assuming because it defaulted to a nonsupported value). In the new version of Monkey, I had to use SetDeviceWindow, but I think the code was working even then, although I could be wrong, because it was updated "in a hurry" just to get it to compile again.

Here's what it looks like now; the behavior's clearly broken, and the stencil mask is clearly passing everything to be drawn.

I tried it without SetDeviceWindow(), and the result was the same. Am I missing some voodoo here, or did the change over to this as a documented feature disable stencil bit processing entirely?


Figured out the issue. My current workaround involves editing the GLFW3 target. Please consider a patch!
In \targets\glfw3\modules\native\glfwgame.cpp , line 579, change the following line:

glfwWindowHint( GLFW_STENCIL_BITS,0 );

to this:

glfwWindowHint( GLFW_STENCIL_BITS,8 );

A new flag for SetDeviceWindow could also do, if you don't want the stencil channel to be enabled by default....


I've created a pull request for this issue, with a conservative approach just in case there's a reason to have the default stencilbits hint set at 0. Please consider...
blitz-research/monkey#89

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.