Giter Club home page Giter Club logo

wudsn-ide's Introduction

WUDSN IDE

WUDSN IDE is a free integrated Apple II, Atari 2600, Atari 7800, Atari 8-bit, C64 and NES development plugin for Eclipse.
Example

Know Issues

wudsn-ide's People

Contributors

peterdell 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

wudsn-ide's Issues

Support key binding (F3) for forward navigation like CTRL+click

Currently forward navigation only works vor CTRL-click. In some cases where the target is not unique, this is good, because you also have to chose which target to use. But a default navigation to the first target should also be possible with the standard "Open Declaration (F3)" function key. Also the forward navigation only works if the outline is opened, this should not be required.

image

Annotations @com.wudsn.ide... not parsed correctly

Source code annotations of the form

; @com.wudsn.ide.asm.outputfileextension=.rom
using the ".asm" infix are deprecated and should still work but should be reported as warning.

Use annotation '@com.wudsn.ide.lng.outputfileextension' instead of the deprecated annotation '@com.wudsn.ide.asm.outputfileextension'.

Source code annotations of the form
; @com.wudsn.ide.lng.outputfileextension=.rom2
using the new ".lng" infix should work.

Support dark theme

On large monitors, working with a dark theme is mandatory to not overload the eyes. Currently the icons and color schemes in WUDSN no not work correctly when the darf theme is active. Icons need to be reworks to use transparency and probably there need to be two sets of icons and default colors.

image

Feature Parity for Mad Pascal

Currently he Mad Pascal editor is only a stub editor with basic syntax highlighting. The colors are hard coded and not taken from the preferences. There is not actual runner that works out of the but, instead a batch script that calls MP and then MADS is required.

MP could be integrated deeply using http://www.mpsinc.com/pas2j.html to get a proper parser.
MP should be bundled with MADS into a single compiler executable.

Bugs fixed before version 1.7.2

The issue contains the documentation of all bugs fixed before the development was moved to GitHub.

◦1.6.4
◾Automatic creation of ".DSK" disk images for Apple II works correctly.
◾The dirty indicator in Graphics Editor is now updated correctly.

◦1.6.4
◾The toolbar icons now work correctly with newer Eclipse versions.
◾Atari 8-bit Graphics 12 Converter works again.
◾The graphics editor now correctly closes the input stream for image files.
◾Empty selection and too large numbers no longer lead to exceptions when opening the context menu for "Convert...".
◾Pressing refresh in the graphics converter now always updates the image pane correctly, not only if the size has changed.
◾Inline repeats like ":64" in MADS are no longer detected as labels.
◾Hex Editor now correctly detects erroneous COM files if the segment length exceeds the file length (by one).
◾Disk images (for Apple II) are now updated if only "Build" instead of "Build and Run" is used.
◾Apple Commander integration is now part of the installation, as it should have been with 1.6.3.
◾The HELLO program generated for the auto-start disk images of Apple II now displays a title and uses "BLOAD/CALL" instead of "BRUN" because of this bug in Apple DOS. 10 PRINT "Loading <title>" : PRINT CHR$(4);"BRUN WORLD" : CALL

◦1.6.3
◾The first character of numbers is now correctly highlighted in "#123".
◾Source files included via "INCSRC" are now correctly detected for ASM6.

◦1.6.2
◾Typing a "." to trigger the automatic content assistance no longer locks up.
◾The default color for illegal opcodes changed to red as it was intended.
◾German localization for the graphics editor is finally completed.
◾The sorting of applications in the preferences now is "Default, A...Z, User Defined" in non-English localizations.

◦1.6.1
◾Clicking in the outline always positions the cursor correctly in the source, not only the first time.
◾All names of content types are now translated correctly in the preferences.
◾The "Open Folder" command now works for objects that can be adapted to resources or files - for example, project explorer entries for Java classes.

◦1.6.0
◾Hyperlink navigation now works for labels containing an underscore.
◾The key binding for the "Compile" menu is now "Shift-Ctrl-9" because it turned out that "Ctrl-0" is not available in all cases.
◾The HexEditor also detects that the first block of a COM file is incorrect and displays this correctly.
◾Content assistance now correctly inserts new lines when inserting "#IF", "#WHILE", or ".TEST".
◾Fonts and color resources are disposed of correctly now.
◾Resetting to default syntax colors in the preferences works now.
◾Elements of ".ENUM" definitions are also recognized as equates if they do not start at position 0.
◾Elements of ".STRUCT" definitions are also recognized as labels if they do not start at position 0.
◾The cursor is now positioned to the first character of an equate or label if it is not defined starting at position 0.
◾The cursor is now positioned to the first character of an equate or label if it is not defined starting at position 0.

  • ◦1.5.0

◾Syntax highlighting remains active now also after "Save as...".
◾The cursor is now placed correctly by content assistance.
◾The key binding for the "Compile" menu is now "Ctrl-0" instead of "Ctrl-Alt-0", so entering "}" is now possible again.
◾XASM editor now correctly detects the "ORG" directive.
◾The assembler editor toolbar contribution now also displays the label "Assembler" in the customizing dialog for the perspective.

◦1.4.4
◾The ".LOCAL" in ATASM does not start a folding section, while in MADS, it is a folding section from ".LOCAL" to ".ENDL".
◾"SIN()" and "RND()" in MADS are now recognized correctly, even if there are no spaces before or after the directive.
◾".EN" and ."END" in MADS are now recognized correctly.
◾Labels in "ORG" lines are now recognized correctly and rendered as separate tree entries.
◾Preferences for lower-case/upper-case instructions in content assistance are now evaluated for directives that do not start with letters like ".end".
◾When opening a file from outside the workspace, the actions to open folders and compile the file do nothing and will not cause exceptions. They will also be disabled once the new Eclipse version is mandatory.
◾A space now separates the 16 bytes per row in the hex editor.

◦1.4.3
◾The output file is not opened anymore in case it has been there before but was not updated by the compiler due to errors.
◾The editor's scroll bar and cursor are now stable when the latest user input changes the outline.
◾The hex editor gets the focus correctly when clicking on already-opened files.

◦1.4.2
◾The folder containing the output and symbols files is refreshed automatically after compiling to ensure that the Eclipse resource cache is in sync with the file system.
◾Line end comments are now used as a description for source and binary include nodes in the content outline.
◾The "Open Folder" context menu entry works again. This fixes a bug introduced in version 1.4.0.

◦1.4.0
◾The "Assembler" menu is only visible if an Assembler editor is active. The contained entries and shortcuts are now disabled if no Assembler editor is active.
◾The output file is not deleted before the compiler is started. Instead, it is only checked for being writeable. This allows for direct compilation into an existing ATR image.
◾The application name used to open the output file is now included in the info message.

◦1.3.2
◾The content outline sometimes only finds the first macro definition.
◾Folding did not show up in all situations.
◾Under macOS, the file select dialog can now choose an "*.app" folder because apps like "Atari800MacX.app" are folders. The solution is a workaround to the general Eclipse problem under macOS. See BUG 82155.

◦Before 1.3.2
◾The "OK" and "Apply" buttons in the preferences are now always enabled, irrespective of the specified compiler and emulator paths.
◾The focus is not back in the editor window after compiling.
◾The syntax highlighting of illegal opcodes fixed now also uses the preferences setting.
◾The properties for the correct locale are now found on German operating systems.

Key binding conflict with Ctrl+Shift+0 on Windows

The default key binding for "Compiler/Compile" is Ctrl+Shift+9 and for "Compiler/Compile and Run" it is Ctrl-Shift-0.
They come from a time when I was used to my Amiga 500 keyboard.
In recent Windows versions this binding was reported to not work because of conflicts with native Windows functions.

Phaeron reported similar issues in the context of Altirra "This is likely due to an annoying default in Windows where Ctrl+Shift+0 is by default bound to a key to switch between input languages. It appears that on Windows 10, this can cause the emulator to only receive the character event without the key down event, resulting in a regular 0 getting typed instead. You can see this with the HOSTKEYS logging channel enabled. The offending setting is in Settings > Devices > Typing > Advanced Keyboard Settings > Input Language Hot Keys on Windows 10, or the Text Services and Input Languages control panel in earlier versions"

One proposal was use the standard Eclipse key binding instead which is:

  • F11 and Ctrl-F11 on Windows (would be OK)
  • Fn-Cmd-F11 and Shift-Fn-Cmd-F11 on a MacBook Pro (3 or even 4 keys because of Fn, but Fn-Cmd-F11 is close to Ctrl-Shift-0)

Other standards:

  • F8 (Run in many Environments incl. Altirra)
  • F5 (Debug in Visual Studio, but already taken by "Refresh" in Eclipse, Browsers, etc., not possible)

Requests for feedback:
https://forums.atariage.com/topic/145386-wudsn-ide-the-free-integrated-atari-8-bit-development-plugin-for-eclipse/page/31/#comments
https://abbuc.de/forum/viewtopic.php?f=7&t=1006&p=12760#p12760

Atari 8-bit Assemblers: settings are ignored

What is wrong:

  • Complier/Compile always to temp directory, the "Output folder" setting does not take any effect.
  • Compiler/Open Output Folder does open the temp directory (instead of source as configured)
  • Trying to launch the compiled xex file fails: Cannot open output file 'C:\Users\witoldsz\AppData\Local\Temp\HelloWorld.xex' with the standard application since no application is registered for the file extension '.xex'. even though path to Altirra64 was set.

The compilation itself works fine, though:

Compiling for hardware ATARI8BIT on 1/2/23, 5:27 AM: C:\Users\witoldsz\Downloads\Tools\ASM\MADS\mads.exe C:\Users\witoldsz\Downloads\Projects\Atari800\HelloWorld.asm -o:C:\Users\witoldsz\AppData\Local\Temp\HelloWorld.xex -p -t:C:\Users\witoldsz\AppData\Local\Temp\HelloWorld.lab -l:C:\Users\witoldsz\AppData\Local\Temp\HelloWorld.lst

Compiler 'MADS' output:

Writing listing file...
Writing object file...
13 lines of source assembled in 2 pass
29 bytes written to the object file

Steps:

  1. Fresh install, as described here: wudsn/wudsn-ide-install#1 (comment)
  2. File/Import Projects from File System: C:\Users\witoldsz\Downloads\Projects\Atari800
  3. Open Atari800/HelloWorld.asm
  4. Help/Languages/Assembler, MADS at the bottom, path to compiler: C:\Users\witoldsz\Downloads\Tools\ASM\MADS\mads.exe
  5. Help/Languages/Assembler/Atari 8-bit Assembler/MADS/Output Folder = Source Folder
  6. Help/Languages/Assembler/Atari 8-bit Assembler/MADS/User Defined Application = C:\Users\witoldsz\Downloads\Tools\EMU\Altirra\Altirra64.exe
  7. The build processs should take place in C:\Users\witoldsz\Downloads\Projects\Atari800, but:
    Compiling for hardware ATARI8BIT on 1/2/23, 5:27 AM: C:\Users\witoldsz\Downloads\Tools\ASM\MADS\mads.exe C:\Users\witoldsz\Downloads\Projects\Atari800\HelloWorld.asm -o:C:\Users\witoldsz\AppData\Local\Temp\HelloWorld.xex -p -t:C:\Users\witoldsz\AppData\Local\Temp\HelloWorld.lab -l:C:\Users\witoldsz\AppData\Local\Temp\HelloWorld.lst

This is exactly same as I have on Linux:

  • downloaded Eclipse Platform,
  • installed WUDSN plugin,
  • configured MADS compiler
  • and I could not force it to build in the project's directory (it was always /tmp) or launch the xex.

Attaching the current configuration for reference:

#Mon Jan 02 05:41:16 PST 2023
\!/=
/configuration/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
/instance/com.wudsn.ide.lng/asm.compiler.mads.executable.path=C\:\\Users\\witoldsz\\Downloads\\Tools\\ASM\\MADS\\mads.exe
/instance/com.wudsn.ide.lng/asm.editor.text.attribute.identifier.enum=0,0,0,,,,0
/instance/com.wudsn.ide.lng/asm.editor.text.attribute.identifier.equate=0,0,0,,,,0
/instance/com.wudsn.ide.lng/asm.editor.text.attribute.identifier.label=0,0,0,,,,0
/instance/com.wudsn.ide.lng/asm.editor.text.attribute.identifier.local=0,0,0,,,,0
/instance/com.wudsn.ide.lng/asm.editor.text.attribute.identifier.macro=0,0,0,,,,0
/instance/com.wudsn.ide.lng/asm.editor.text.attribute.identifier.procedure=0,0,0,,,,0
/instance/com.wudsn.ide.lng/asm.editor.text.attribute.identifier.structure=0,0,0,,,,0
/instance/com.wudsn.ide.lng/compiler.acme.atari8bit.output.folder.mode=SOURCE_FOLDER
/instance/com.wudsn.ide.lng/compiler.acme.atari8bit.runner.id=default_application
/instance/com.wudsn.ide.lng/compiler.acme.atari8bit.target=MOS6502
/instance/com.wudsn.ide.lng/compiler.asm6.atari8bit.output.folder.mode=SOURCE_FOLDER
/instance/com.wudsn.ide.lng/compiler.asm6.atari8bit.runner.id=default_application
/instance/com.wudsn.ide.lng/compiler.asm6.atari8bit.target=MOS6502
/instance/com.wudsn.ide.lng/compiler.atasm.atari8bit.output.folder.mode=SOURCE_FOLDER
/instance/com.wudsn.ide.lng/compiler.atasm.atari8bit.runner.id=default_application
/instance/com.wudsn.ide.lng/compiler.atasm.atari8bit.target=MOS6502
/instance/com.wudsn.ide.lng/compiler.dasm.atari8bit.output.folder.mode=SOURCE_FOLDER
/instance/com.wudsn.ide.lng/compiler.dasm.atari8bit.runner.id=default_application
/instance/com.wudsn.ide.lng/compiler.dasm.atari8bit.target=MOS6502
/instance/com.wudsn.ide.lng/compiler.kickass.atari8bit.output.folder.mode=SOURCE_FOLDER
/instance/com.wudsn.ide.lng/compiler.kickass.atari8bit.runner.id=default_application
/instance/com.wudsn.ide.lng/compiler.kickass.atari8bit.target=MOS6502
/instance/com.wudsn.ide.lng/compiler.mads.atari8bit.output.folder.mode=SOURCE_FOLDER
/instance/com.wudsn.ide.lng/compiler.mads.atari8bit.runner.id=default_application
/instance/com.wudsn.ide.lng/compiler.mads.atari8bit.runner.user_defined_application.executable.path=C\:\\Users\\witoldsz\\Downloads\\Tools\\EMU\\Altirra\\Altirra64.exe
/instance/com.wudsn.ide.lng/compiler.mads.atari8bit.target=MOS6502
/instance/com.wudsn.ide.lng/compiler.merlin32.atari8bit.output.folder.mode=SOURCE_FOLDER
/instance/com.wudsn.ide.lng/compiler.merlin32.atari8bit.runner.id=default_application
/instance/com.wudsn.ide.lng/compiler.merlin32.atari8bit.target=MOS6502
/instance/com.wudsn.ide.lng/compiler.tass.atari8bit.output.folder.mode=SOURCE_FOLDER
/instance/com.wudsn.ide.lng/compiler.tass.atari8bit.runner.id=default_application
/instance/com.wudsn.ide.lng/compiler.tass.atari8bit.target=MOS6502
/instance/com.wudsn.ide.lng/compiler.test.atari8bit.output.folder.mode=SOURCE_FOLDER
/instance/com.wudsn.ide.lng/compiler.test.atari8bit.runner.id=default_application
/instance/com.wudsn.ide.lng/compiler.test.atari8bit.target=MOS6502
/instance/com.wudsn.ide.lng/compiler.xasm.atari8bit.output.folder.mode=SOURCE_FOLDER
/instance/com.wudsn.ide.lng/compiler.xasm.atari8bit.runner.id=default_application
/instance/com.wudsn.ide.lng/compiler.xasm.atari8bit.target=MOS6502
/instance/com.wudsn.ide.lng/editor.compile.command.positioning.mode=FIRST_ERROR_OR_WARNING
/instance/com.wudsn.ide.lng/editor.content.assist.processor.default.case=LOWER_CASE
/instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
/instance/org.eclipse.core.resources/encoding=UTF-8
/instance/org.eclipse.core.resources/version=1
/instance/org.eclipse.debug.ui/org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<launchPerspectives/>\r\n
/instance/org.eclipse.debug.ui/preferredTargets=com.wudsn.ide.lng.breakpoint.LanguageBreakpointsTarget.ASM\:com.wudsn.ide.lng.breakpoint.LanguageBreakpointsTarget.ASM|
/instance/org.eclipse.ui.console/org.eclipse.ui.console.P_CONSOLE_WORD_WRAP=true
/instance/org.eclipse.ui.editors/tabWidth=8
/instance/org.eclipse.ui.ide/MAX_RECENT_WORKSPACES=10
/instance/org.eclipse.ui.ide/RECENT_WORKSPACES=C\:\\Users\\witoldsz\\Downloads\\Workspace 
/instance/org.eclipse.ui.ide/RECENT_WORKSPACES_PROTOCOL=3
/instance/org.eclipse.ui.ide/SHOW_RECENT_WORKSPACES=false
/instance/org.eclipse.ui.ide/SHOW_WORKSPACE_SELECTION_DIALOG=false
/instance/org.eclipse.ui.ide/platformState=1672665606366
/instance/org.eclipse.ui.ide/quickStart=false
/instance/org.eclipse.ui.ide/tipsAndTricks=true
/instance/org.eclipse.ui.navigator/org.eclipse.ui.navigator.ProjectExplorer.filterActivation=\:org.eclipse.ui.navigator.resources.filters.startsWithDot\:org.eclipse.ui.navigator.resources.nested.HideTopLevelProjectIfNested\:org.eclipse.ui.navigator.resources.nested.HideFolderWhenProjectIsShownAsNested\:
/instance/org.eclipse.ui.workbench/org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_END=255,255,255
/instance/org.eclipse.ui.workbench/org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_START=255,255,255
/instance/org.eclipse.ui.workbench/org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_TEXT_COLOR=16,16,16
/instance/org.eclipse.ui.workbench/org.eclipse.ui.workbench.ACTIVE_TAB_BG_END=255,255,255
/instance/org.eclipse.ui.workbench/org.eclipse.ui.workbench.ACTIVE_TAB_BG_START=255,255,255
/instance/org.eclipse.ui.workbench/org.eclipse.ui.workbench.INACTIVE_TAB_BG_START=242,242,242
/instance/org.eclipse.ui/showIntro=false
/instance/org.eclipse.urischeme/processedSchemes=,eclipse+command
@com.wudsn.ide.lng=1.7.2.202212270309
@org.eclipse.core.net=1.4.0.v20220813-1037
@org.eclipse.core.resources=3.18.100.v20221025-2047
@org.eclipse.debug.ui=3.17.100.v20220926-1344
@org.eclipse.ui=3.201.200.v20221024-2137
@org.eclipse.ui.console=3.11.400.v20221012-0524
@org.eclipse.ui.editors=3.14.400.v20220730-1844
@org.eclipse.ui.ide=3.20.0.v20221027-2208
@org.eclipse.ui.navigator=3.10.400.v20221024-2137
@org.eclipse.ui.workbench=3.127.0.v20221024-2137
@org.eclipse.urischeme=1.2.200.v20221024-2137
file_export_version=3.0

Larger outline icons for higher resolution displays

Screen resolutions are increasing and recent Eclipse version include x2 sized additional icons.
The WUDSN IDE icons' size should also be doubled.
Recent samples from org.eclipse.jdt.ui_3.27.100.v20221122-0749 are attached.
I'd need the help of somebody who is proficient in graphics to adapt the current icons the same way.
class_obj
class_obj@2x

new-icons.zip

Atari TTF font small and blurry on macOS

https://forums.atariage.com/topic/145386-wudsn-ide-the-free-integrated-atari-8-bit-development-plugin-for-eclipse/page/29/#comment-4938300

I've attached a screenshot of the hex editor and actually I think it uses the Atari TTF font, it's just very small and blurry.

Also there's nothing in the .metadata/.log file related to this, here is the context when starting eclipse and displaying the hex editor:

!SESSION 2021-11-04 08:22:49.958 -----------------------------------------------
eclipse.buildId=4.21.0.I20210906-0500
java.version=17
java.vendor=Eclipse Adoptium
BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=de_DE
Framework arguments: -keyring /Users/hermann/.eclipse_keyring
Command-line arguments: -os macosx -ws cocoa -arch x86_64 -keyring /Users/hermann/.eclipse_keyring

!ENTRY org.eclipse.oomph.p2.core 2 0 2021-11-04 08:22:52.208
!MESSAGE Failed to register the thread safe credentials providers: 'java.util.Map org.eclipse.core.internal.runtime.AdapterManager.getFactories

image

Automatically install German language pack

The WUDSN IDE pluging contains both English and German translations for its elements. Therefore the installer should also automatically install the Germand language pack for for Eclipse runtime to prevent mixed UI languages.

Manual procedure:
Download the matching language pack from https://eclipse.dev/babel/downloads.php
http://www.eclipse.org/downloads/download.php?file=/technology/babel/babel_language_packs/R0.20.0/2022-12/BabelLanguagePack-eclipse-de_4.26.0.v20230220105658.zip
Unzip the file
Copy the contained "eclipse" folder over the existing "eclipse" folder of your installation. This will not overwrite any files but only add new jars with the German texts.

Example: C:\jac\wudsn\stable\Tools\IDE\Eclipse\eclipse

image

Also the FAQ should be extended to include the description on where to find and how to install language packs and how to start with a language other than the OS default.

Merlin DSK ESDOS Error

Hi,

I am trying to compile a simple source code with Merlin32 and run it with AppleWin1.30.13.0.
The compilation process works and it automatically creates a DSK file that can be used to run the application on the emulator.
However, this DSK is formatted with ESDOS(??) and the file attributes are kind of weird.
If I create an empty ProDOS1.4.1 and copy the ".b" file with CiderPres into it I am able to run it by changing the file type to $06 and Aux Type set to the same address value as what I have in my ORG directive (ORG $8000).
While examining the DSK generated by WUDSN the file has the correct file type but the Aux Type is wrong. Instead of having it with 8000 (same as ORG in the source code) it has the value 1620. If I open it with CiderPress and view this binary file it displays the code starting at $1620. In addition to it, the code stored on this file is very different. The first opcode used on my program should be "20 EC 80" and instead the file starts with "7F".
So when I run this disk on the emulator, I get a monitor prompt instead of the application running:
The emulator states "Loading Balls"
80F0 - A-16 X=9D Y=00 P=36 S=F0
If I go to address $1620 I see the same opcodes I see via CidePress which is probably what is performing a jump to subroutine at address $80EC (which kind of looks like why it terminates at address 80F0).

Am I missing something or doing anything that is not supported?

Would it make more sense to have settings related to disk image (OS templates to be used for the disk) and file attributes, etc?
This way we could control how the disk image gets generated. It would also allow you to have a Hard Disk Image (2mg format) to run on the emulator which would contain additional tools and your binary file.

BTW: I am using Eclipse Version: 2023-06 (4.28) with the following plugins:
WUDSN Base Feature 1.7.2.202303171941 com.wudsn.ide.base.feature.feature.group WUDSN
WUDSN IDE 1.7.2.202303171941 com.wudsn.ide.feature.feature.group WUDSN

Best regards,
Ivan

New annoation @com.wudsn.ide.lng.language/compiler

To make the detection of the correct editor more explicit and independent of global settings, these two additional annotation should be available to indicate the compiler directly in the source code.
This was the file extension (which is typically .asm for many different assemblers) does not matter anymore.

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.