Code Monkey home page Code Monkey logo

debugger-libs's Introduction

This repository contains several libraries which can be used to control the Mono debugger.

  • Mono.Debugger.Soft: The Mono Soft Debugger low level API
  • Mono.Debugging: Pluggable debugger API abstraction. It provides a common API to be used as frontend to different debuggers.
  • Mono.Debugging.Soft: Mono.Debugging backend for the Mono Soft Debugger.

Dependencies

The libraries in this repository have external dependencies, specifically:

debugger-libs's People

Contributors

akoeplinger avatar alanmcgovern avatar arseniicherniaev avatar bratsche avatar davidkarlas avatar dvdsgl avatar harukamm avatar indomitable avatar jbevain avatar joj avatar jonathan34c avatar jpobst avatar jstedfast avatar kirillosenkov avatar lukaszunity avatar marshall-lerner avatar mauroa avatar mhutch avatar mkrueger avatar mrward avatar nerzhulart avatar nosami avatar sevoku avatar sgmunn avatar slluis avatar tak avatar thaystg avatar therzok avatar vargaz avatar xamarin-release-manager 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

Watchers

 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

debugger-libs's Issues

2.56 version of protocol is unable to enumerate frames properly while active evaluation

Hi!

I've discovered that the 2.56 version of the protocol (the newest version for now) has a degradation.
When we start an evaluation from Immediate window we expect that Debugger.Break() will be processed correctly, but thread.GetFrames () is seemed to return the wrong frames when we are stopped on UserBreakEvent. It stopped working between 2.51 and 2.56 versions.

I was able to build a stable repro in my fork, tested on Windows. Just add a breakpoint to the end of Program.TopFrameCheck method in the Driver project and launch it. The topFrameName differs from Program.EvaluationWithUserBreakInside for 2.56 protocol version, but works correctly for 2.51 (you can change Connection.MINOR_VERSION to 2.51 to check that).

Here is what happens on my windows environment:
image

Mono.Debugging.Soft.SoftDebuggerSession.LoadPdbFile NullReferenceException

When mono.exe is launched without the mdb-optimizations option the IDE extension fails in Mono.Debugging.Soft.SoftDebuggerSession.LoadPdbFile

sample command for issue repro:
"C:\Program Files (x86)\Mono\bin\mono.exe" --debug --debugger-agent=transport=dt_socket,address=127.0.0.1:8874 "C:\develop\User\Prototypes\MonoSampleProject1\bin\Debug\MonoSampleProject1.exe"

sample command which works ok:
"C:\Program Files (x86)\Mono\bin\mono.exe" --debug=mdb-optimizations --debugger-agent=transport=dt_socket,address=127.0.0.1:8874 "C:\develop\User\Prototypes\MonoSampleProject1\bin\Debug\MonoSampleProject1.exe"

EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at Mono.Debugging.Soft.SoftDebuggerSession.LoadPdbFile(String assemblyFileName, String pdbFileName)
   at Mono.Debugging.Soft.SoftDebuggerSession.LoadDebugFile(String assemblyFileName, String debugFileName, Func`3 loadDebugFile)
   at Mono.Debugging.Soft.SoftDebuggerSession.CheckBetterMatch(TypeMirror type, String file, Int32 line, Int32 column, Location found)
   at Mono.Debugging.Soft.SoftDebuggerSession.FindLocationByMethod(MethodMirror method, String file, Int32 line, Int32 column, Boolean& insideTypeRange)
   at Mono.Debugging.Soft.SoftDebuggerSession.FindLocationByType(TypeMirror type, String file, Int32 line, Int32 column, Boolean& genericMethod, Boolean& insideTypeRange)
   at Mono.Debugging.Soft.SoftDebuggerSession.ResolveBreakpoints(TypeMirror type)
   at Mono.Debugging.Soft.SoftDebuggerSession.HandleTypeLoadEvents(TypeLoadEvent[] events)
   at Mono.Debugging.Soft.SoftDebuggerSession.HandleEventSet(EventSet es)
   at Mono.Debugging.Soft.SoftDebuggerSession.EventHandler()

Stackframe data is not available on threadpool threads

The VSCode debugger for Mono has recently switched to using nuget packages built from this repo. I am observing that while debugging a thread that is not the main thread, I get no stackframe information and the debugger seems to not notice the line number for the breakpoint it is currently paused at.

GetMethodsByNameFlags throws NotImplementedException

I am having an issue with evaluating locals in Mono Develop after updating to the latest version, instead of evaluation a exception string is just shown.

I tracked down the exception that is throw to: https://github.com/mono/debugger-libs/blob/master/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs#L771

GetMethodsByNameFlags get called with BindingFlags.DeclaredOnly, this was changed recently: 3e24c75

If I comment out the flags check and throw, evaluation of locals works.

System.ArgumentException: An item with the same key has already been added.

While trying to debug an Xamarin Android app in VS2017, 15.8 Preview 5, I got this exception:

EXCEPTION: System.ArgumentException: An item with the same key has already been added.
   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at Mono.Debugging.Soft.SoftDebuggerSession.RegisterAssembly(AssemblyMirror asm) in E:\A\_work\102\s\external\debugger-libs\Mono.Debugging.Soft\SoftDebuggerSession.cs:line 1914
   at Mono.Debugging.Soft.SoftDebuggerSession.ProcessType(TypeMirror t) in E:\A\_work\102\s\external\debugger-libs\Mono.Debugging.Soft\SoftDebuggerSession.cs:line 2395
   at Mono.Debugging.Soft.SoftDebuggerSession.OnInsertBreakEvent(BreakEvent breakEvent) in E:\A\_work\102\s\external\debugger-libs\Mono.Debugging.Soft\SoftDebuggerSession.cs:line 978
   at Mono.Debugging.Client.DebuggerSession.AddBreakEvent(BreakEvent be) in E:\A\_work\102\s\external\debugger-libs\Mono.Debugging\Mono.Debugging.Client\DebuggerSession.cs:line 624

grafik


Version information:

Microsoft Visual Studio Enterprise 2017 Preview
Version 15.8.0 Preview 5.0
VisualStudio.15.Preview/15.8.0-pre.5.0+27924.0
Microsoft .NET Framework
Version 4.7.03062

Mono Debugging for Visual Studio 4.11.7-pre (8955b2a)
Support for debugging Mono processes with Visual Studio.

Xamarin 4.11.0.731 (d15-8@1b61b3b4e)
Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android.

Xamarin Designer 4.14.218 (79f535bdd)
Visual Studio extension to enable Xamarin Designer tools in Visual Studio.

Xamarin Templates 1.1.104 (12ebed1)
Templates for building iOS, Android, and Windows apps with Xamarin and Xamarin.Forms.

Xamarin.Android SDK 9.0.0.17 (HEAD/dfb09269d)
Xamarin.Android Reference Assemblies and MSBuild support.

Xamarin.iOS and Xamarin.Mac SDK 11.14.0.11 (61d20a8)
Xamarin.iOS and Xamarin.Mac Reference Assemblies and MSBuild support.

Support instruction-level version of SetNextStatement

Since we support a variety of instruction-level features (such as step over instruction, step into instruction, disassembly, etc) it would make sense for this to be supported as well, especially since that's what the Mono.Debugger.Soft API actually exposes.

Mono.Debugging.VisualStudio not included in these debugger libs.

When writing Visual Studio extensions for Windows, that use the Mono stack, currently customers have to install the MAUI workload (a few GB download) for the extensions to work, due to the Mono.Debugging.VisualStudio dependency. Who do we need to speak to about getting Mono.Debugging.VisualStudio included in this lib, or alternatively nugetized so we can use it directly in our extensions, without the MAUI dependency?

Currently our DebuggerLaunchProvider class makes use of the IDebugLauncher, DebuggingOptions, DebuggerSession, StartInfo and SessionMarshalling interface/classes. As well as the Guids.PortSupplierGuid and Guids.EngineGuid in our DebugLaunchSettings class.

new Breakpoints unable to insert error

@thaystg Greeting.
While in debug run mode, any breakpoint add will result in an breakpoint event error complaining the breakpoint "Could not insert". Although these newly added breakpoints are actually bounded => they can be hit as expected, these false error message are still kind of confusing.

After searching some commits, we found that from this commit, the breakpoint resolved mark found initialized as false and not updated, leading to the breakpoint status wrongly setup right below.

source: SoftDebuggerSession.cs, around line 1177

Could you fix it?

Nullables and Evaluation

Hi,

The following code is perfectly legal and runs fine as a simple console application.

static class NullableMarshalTest
{
	public static bool NullableHasValue1(int? test)
	{
		return test.HasValue;
	}
}

class MainClass
{
	public static void Main(string[] args)
	{
		var test1 = NullableMarshalTest.NullableHasValue1(null); // false
		var test2 = NullableMarshalTest.NullableHasValue1(0); // true
		var test3 = NullableMarshalTest.NullableHasValue1((byte)0); // true
		var test4 = NullableMarshalTest.NullableHasValue1(new int?(0)); // true
		var test5 = NullableMarshalTest.NullableHasValue1((int?)(0)); // true
	}
}

Now if you try to evaluate the exact same expressions using the watch (I tested with VS4Mac 7.0.1 - build 24), it will fail with the following:

NullableMarshalTest.NullableHasValue1(null); // invalid arguments
NullableMarshalTest.NullableHasValue1(0); // incorrect number of arguments
NullableMarshalTest.NullableHasValue1((byte)0); // invalid arguments
NullableMarshalTest.NullableHasValue1(new int?(0)); // System.NullReferenceException
NullableMarshalTest.NullableHasValue1((int?)(0)); // incorrect number of arguments

This seems to be mainly related to implicit/explicit conversion operators.

But the very interesting one is the example throwing System.NullReferenceException, because it's probably an invocation exception (as the argument perfectly fits).

Child AppDomain code points not resolved

I have a test project which I try to debug with Mono.Debugging.Soft:

        public static void Main(string[] args)
        {
            string appName = "ChildAppDomainTest";

            AppDomainSetup setup = new AppDomainSetup();
            setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
            setup.ApplicationName = appName;

            AppDomain newDomain = AppDomain.CreateDomain(appName, AppDomain.CurrentDomain.Evidence, setup);
            ChildDomainLogic childDomainProxy = (ChildDomainLogic)newDomain.CreateInstanceAndUnwrap(
                typeof(ChildDomainLogic).Assembly.FullName,
                typeof(ChildDomainLogic).FullName,
                true,
                BindingFlags.Default,
                null,
                new object[] { },
                null,
                null);

            DateTime result = childDomainProxy.Test1();
        }

the child domain logic is simple:

    public class ChildDomainLogic : MarshalByRefObject
    {
        public DateTime Test1()
        {
            Debug.WriteLine("ChildDomainLogic.Test1");
            return DateTime.Now;
        }
    }

If I set a breakpoint into the ChildDomainLogic it gets hit but the debugger does not resolve it as user code (shown as external code at the Callstack window) and code stepping does not show the execution location.

Evaluation with types using a generic DebuggerTypeProxy attribute under an old runtime (protocol < 2.15)

@DavidKarlas already improved the support for that, in the PR 546b242

But there is still an issue with a simple List:

void Update()
{
  var varlist = new List<int>();
  varlist.Add(12);
  varlist.Add(-1);
}

Expanding varlist in the watch, will give "This request is not supported by the protocol":

screenshot 2018-01-30 14 22 44

Same when hovering:
screenshot 2018-01-30 14 22 59

Reproduced with Unity 2017.3.0f3 (legacy runtime) + VSfM 7.4 build 920 preview

cc @jbevain

NullReference debugging MonoDevelop

Debugging MonoDevelop's Main.sln using VS Mac 8.1.0.2466 + mono 5.18.1.24

VSMac Build Information
Release ID: 801002466
Git revision: d05d64ea42dcc84fde9c926c94b9360126217284
Build date: 2019-05-16 00:47:18+00
Build branch: release-8.1
Xamarin extensions: 735d3d5d1daaee9cf9b045febed581680960e8b2
Mono: 5.18.1.24 (2018-08/082e1a23463 Tue Apr 30 13:26:14 EDT 2019)

Debugger operation failed
System.NullReferenceException: Object reference not set to an instance of an object
  at Mono.Debugging.Soft.SoftDebuggerSession.GetId (Mono.Debugger.Soft.ThreadMirror thread) [0x00000] in /Users/vsts/agent/2.150.3/work/1/s/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerSession.cs:3130 
  at Mono.Debugging.Soft.SoftDebuggerSession.OnGetThreads (System.Int64 processId) [0x0002c] in /Users/vsts/agent/2.150.3/work/1/s/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerSession.cs:811 
  at Mono.Debugging.Soft.SoftDebuggerSession.GetThread (Mono.Debugging.Client.ProcessInfo process, Mono.Debugger.Soft.ThreadMirror thread) [0x00008] in /Users/vsts/agent/2.150.3/work/1/s/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerSession.cs:834 
  at Mono.Debugging.Soft.SoftDebuggerSession.HandleBreakEventSet (Mono.Debugger.Soft.Event[] es, System.Boolean dequeuing) [0x004e6] in /Users/vsts/agent/2.150.3/work/1/s/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerSession.cs:1902 
  at Mono.Debugging.Soft.SoftDebuggerSession.HandleEventSet (Mono.Debugger.Soft.EventSet es) [0x0005b] in /Users/vsts/agent/2.150.3/work/1/s/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerSession.cs:1551 
  at Mono.Debugging.Soft.SoftDebuggerSession.EventHandler () [0x0005d] in /Users/vsts/agent/2.150.3/work/1/s/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerSession.cs:1489 

Running VM in suspend=n mode might return VM_START including a NULL thread.

This is mainly in embedding scenarios not running regular Main method and setting up debugger agent in suspend=n mode. If the embedder hasn't explicitly setup a main thread using mono_thread_set_main API, the VM_START returned to debugger client on attach will include a NULL thread object and when debugger client asks for more information around this object, runtime will shutdown with an error, since it consider the object to be garbage (not existing in this case).

This problem in debugger client is hard to track for embedders so we should at least handle the scenario gracefully with either an error message or handle/recover from the case where VM_START returns a NULL thread object.

MDB Files for Runtime Compiled Code

Hi, I'm wondering about the debug-ability of code that is compiled at runtime. There is a CSharpCodeProvider that allows you to compile a file from within another application at runtime and load those modules into memory for execution.

I think there would be a few logistical issues, but let's pretend that I'm able to generate a PDB and MDB file, do these files need to be present before the application is executed?

I'm playing around with Microsoft's DNX bootstrap, which appears to build a DNX project at runtime and execute it. I've pre generated the PDB and converted to an MDB but can't get the debug agent to load it.

If I build the application and execute it directly with the MDB file, I seem to receive proper debug info on the remote end.

Could anyone explain the process the debug agent follows for loading MDB files (I'm assuming this is my downfall).

Would there be a way to extend the debug agent to allow me to sideload an MDB file on the fly?

I'm kind of just brain storming at the moment, but any info would be appreciated.

Build debugger-libs as a submodule throws nugets not found errors..

@thaystg et al...
I've just updated our debugger-libs submodule to point to the the latest commit, 35ab1bd2c237c155296749fa0a680ce5d4f2e13d, on main
When Github Action CI tries to build the required *.csprojs I get the following errors.

D:\a\VSCode_Meadow_Extension\VSCode_Meadow_Extension\main\src\csharp\VSCodeMeadow.csproj : error NU1101: Unable to find package Microsoft.SymbolStore. No packages exist with this id in source(s): C:\Program Files\dotnet\library-packs, nuget.org
                     D:\a\VSCode_Meadow_Extension\VSCode_Meadow_Extension\main\src\csharp\VSCodeMeadow.csproj : error NU1101: Unable to find package Microsoft.FileFormats. No packages exist with this id in source(s): C:\Program Files\dotnet\library-packs, nuget.org
                     D:\a\VSCode_Meadow_Extension\VSCode_Meadow_Extension\main\externals\debugger-libs\Mono.Debugger.Soft\Mono.Debugger.Soft.csproj : error NU1101: Unable to find package Microsoft.SymbolStore. No packages exist with this id in source(s): C:\Program Files\dotnet\library-packs, nuget.org [D:\a\VSCode_Meadow_Extension\VSCode_Meadow_Extension\main\src\csharp\VSCodeMeadow.csproj]
                     D:\a\VSCode_Meadow_Extension\VSCode_Meadow_Extension\main\externals\debugger-libs\Mono.Debugger.Soft\Mono.Debugger.Soft.csproj : error NU1101: Unable to find package Microsoft.FileFormats. No packages exist with this id in source(s): C:\Program Files\dotnet\library-packs, nuget.org [D:\a\VSCode_Meadow_Extension\VSCode_Meadow_Extension\main\src\csharp\VSCodeMeadow.csproj]
                     D:\a\VSCode_Meadow_Extension\VSCode_Meadow_Extension\main\externals\debugger-libs\Mono.Debugging.Soft\Mono.Debugging.Soft.csproj : error NU1101: Unable to find package Microsoft.SymbolStore. No packages exist with this id in source(s): C:\Program Files\dotnet\library-packs, nuget.org [D:\a\VSCode_Meadow_Extension\VSCode_Meadow_Extension\main\src\csharp\VSCodeMeadow.csproj]
                     D:\a\VSCode_Meadow_Extension\VSCode_Meadow_Extension\main\externals\debugger-libs\Mono.Debugging.Soft\Mono.Debugging.Soft.csproj : error NU1101: Unable to find package Microsoft.FileFormats. No packages exist with this id in source(s): C:\Program Files\dotnet\library-packs, nuget.org [D:\a\VSCode_Meadow_Extension\VSCode_Meadow_Extension\main\src\csharp\VSCodeMeadow.csproj]

    3 Warning(s)
    6 Error(s)

Any tips on how to resolve this? Pointing to an old submodule commit never threw these errors, but we want the latest debugger library fixes :)

Active exception should be available on the backtrace

There can only be one in-flight exception per thread. It makes no sense that I have to get it via a stack frame rather than via the backtrace. This is also problematic because certain unhandled exceptions (such as the FileNotFoundException thrown when Mono fails to load a dependent assembly) have no backtrace.

Deadlocking in AdjustBreakpointLocation

Hey I'm getting deadlocking because DebuggerSession.AdjustBreakpointLocation gets locks on breakpoints and then slock, but in the event thread DebuggerSession.OnBreakpointModified is getting locks on slock then breakpoints.

Obviously you can see where the deadlock is coming from. both thread have the lock on the one the other thread is after. I would say the fix is to have AdjustBreakpointLocation get a lock for slock first since that's what everything else does ๐Ÿ‘

Or have I screwed up and got stuff firing from the wrong thead 0-o

LINQ expression support.

I am trying to write an extension in VS Code that debugs Unity projects.
For this I am using StackFrame.GetExpressionValue(string expression, EvaluationOptions options). The result that I getting back is that the expression is not supported.

The expression is based on an array that I create:
int[] scores = { 97, 92, 81, 60 };
Expression I run in the Debugger console is this: scores.Select(i => i)

Is there something that I am supposed to do differently?

Mono.Debugger.Soft references Microsoft.SymbolStore and Microsoft.FileFormats which don't exist on nuget.or

I was just trying to update our dependencies on Mono.Debug*, to the latest version on main.
When I try to build debugger-libs.sln it tells me these 2 packages don't exist/can't be found. I checked on nuget.org and they are not there either. So Mono.Debugger.Soft.csproj does not compile.

<PackageReference Include="Microsoft.SymbolStore" Version="1.0.411401" />
<PackageReference Include="Microsoft.FileFormats" Version="1.0.411401" />

Any suggestions?

Allow changing includeSubclasses value for catchpoints after creation

Just like how the condition expression for a breakpoint can be set after creating the breakpoint, it would be nice if catchpoints could have their includeSubclasses value changed after creation. This behavior can sort of be achieved by recreating catchpoints when the value needs to be changed, but this is not exactly efficient.

Csproj NuGet package version not found

There are some "NuGetVersionRoslyn" setup in csproj file, they are all set to 4.5.0-1.22517.2 ATM,
used by package
Microsoft.CodeAnalysis.CSharp.Workspaces
Microsoft.CodeAnalysis.VisualBasic.Workspaces
which is beyond the latest 4.4.0, is this version used in purpose? how can we restore these package?

Refactor GetThreads method on VirtualMachine.cs

Following this fix #300

We should start trying to async-ify more of debugger-libs.

@DavidKarlas : Most correct way to fix this issue was to change return type to Task<IList> which would allow us to create TaskCompletionSource and following calls would get same Task as 1st call...
Ofc this means whole callstack will need to be asynced...

Mismatch between domain reload handling in soft debugger client and agent.

I'm submitting this issue as a starting point for a discussion on how to fix a mismatch between how the soft debugger client and agent handle domain reloads.

The debugger agent registers new types (mirrors) with a type + domain pair.
https://github.com/mono/mono/blob/master/mono/mini/debugger-agent.c#L2276
and the types are marked as unloaded when a domain is unloaded.
https://github.com/mono/mono/blob/master/mono/mini/debugger-agent.c#L2210

In the client there is a single cache for all the types across domains
https://github.com/mono/debugger-libs/blob/master/Mono.Debugging.Soft/SoftDebuggerSession.cs#L60
and the types are removed when an assembly is unloaded.
https://github.com/mono/debugger-libs/blob/master/Mono.Debugging.Soft/SoftDebuggerSession.cs#L1879

This causes issues where the agent can unload a type associated with a domain, but if the assembly for the type is not unloaded (due to it being used in another domain), then the client will have a reference to a type that is marked as unloaded in the agent.

Zoltan Varga told me the following when I asked whether this was problem in the debugger agent: "Conceptually, assemblies are loaded into each domain they are referenced, so a reference to a type is really a reference to a type+domain pair, this is how the runtime code works. I think the problem is in the debugger-libs code, which should handle this the same way as the runtime code does, i.e. keep things in domain specific caches, and invalidate those caches when a domain is unloaded, not when an assembly is unloaded."

Would you accept PRs that address this issue and if so, do you have any suggestions for how to go about fixing it?

remote debugging (windows -> linux)

Hello everybody.

My issue is more a question at the moment.
I dove into the task of remote debugging a mono app running on a Linux machine and I am limited to windows and visual studio in terms of IDE.
I do understand that this scenario is not supported by the mono team. But I managed to reanimate the VS extension and successfully got into debugging but I have issues with the Mono.Debugging.Soft.SoftDebuggerSession and in particular how it accesses the file system.

So my question is: do the debugger-libs welcome pull requests targeted on enhancing support for remote debugging at all?

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.