Git Product home page Git Product logo

fcc's Introduction

fcc's People

Contributors

afforess avatar bhelyer avatar feepingcreature 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fcc's Issues

Add testcase for __tuple

Since testcases are de facto documentation, add a testcase for the new __tuple function to show how it's used.
Possibly also have a section on the wiki about static unspooling of loops?

cleanup proposal

mkdir examples
git mv *.nt examples/
cat > Makefile

build script.

dmd --blah
^Z

Document error/exception handling

Neat has different exception/error syntax than D, and needs documentation:
Explain how instead of "throw new Exception str" it uses "raise new Error str", how set-handler/define-exit/all those other weird labels work, and then feel bad for not using try {} catch {} instead.

Failure to compile std.time

Importing std.time fails at compile-time. Log is:

opt -o - .obj/std/time.ll |opt -mattr=-avx,-avx2 -march=x86  - -mcpu=nocona  |llc -O1 -mattr=-avx,-avx2 -march=x86 -mcpu=nocona - -filetype=obj -o .obj/std/time.o
opt: .obj/std/time.ll:24:17: error: invalid cast opcode for cast from 'i32*' to 'i32 addrspace(1)*'
%var9 = bitcast i32* %var8 to i32 addrspace(1)*
                ^
ERROR: Compilation failed with 256 25

LLVM version:

LLVM (http://llvm.org/):
  LLVM version 3.4
  Optimized build.
  Built Jan  6 2014 (22:53:34).
  Default target: x86_64-unknown-linux-gnu
  Host CPU: corei7

I assume that this is a error with how FCC generates LLVM bytecode.

Behavior of "using <mvalue>"

When using "using ", mvalue being an expression that supports assignment but not referencing, which of those should be done?

  1. Export the mvalue as-is. Problem: if it's a struct, calls on it will create a temporary.
  2. Export the mvalue, except if it's a struct (in which case allocate a temporary). Probably the DWIM thing to do, but hacky.
  3. Create a temporary, then reassign it at scope end. Can have powerful effects involving casting reftuples to structs, but will probably lead to unexpected behavior.
  4. Create a temporary, but don't reassign it.

I'll go with option two for now, but would appreciate feedback.

Add a README

Seriously. Also link to the pre-built fcc binary in it and warn them not to try and build it themselves.

Error message on to-stringing of structs

Currently, attempting to coerce a struct into a string with $foo throws an error message (which is good) containing the text Matching rule 'tree.scope': Can't format 5359 (*({struct __vtable<void*>@0, classinfo, saddr<sockaddr_in:sockaddr_in>@1}*: t)).saddr of sockaddr_in:sockaddr_in (which is bad).
The error message should be more friendly and only mention the friendly name of the struct, in this case sockaddr_in

Segfault on loop()

When attempting to read socket.accept() in an iterator, I tried for Socket client <- tcpServer.accept().loop(), which segfaults FCC.
If this isn't the correct function to use for it, it should throw an error message instead of crashing. I don't see any other good way to loop over socket.accept() since while need a bool if condition and Neat doesn't support while(client = tcpServer.accept())

Document language constructs

size-of, string-of, mangle-of, type-of, ReturnType, ParamTypes, types-equal (T,U), type-is, is-defined, implicitly-converts-to all need to be documented somewhere OTHER then then ast/obscure_file.d source. Including documentation about what arguments they take (I'm looking at you type-is tuple T)

Also include the stack guard constructs set-handler, define-exit, onExit, onFailure, onSuccess, etc. since they are pretty important, seeing how they are the entire error-handling system. Consider this a merge of #7.

Segfault when setting int[] value

int[] intTest = [0,0,0]; intTest[0] = 3; writeln "$(intTest[0])";
Crashes when it attempts to set intTest[0].
If you use a long[](or string[]) instead of int[], it works perfectly fine.
long[] longTest = [long:0,0,0]; longTest[0] = long:3; writeln "$(longTest[0])";

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.