GithubHelp home page GithubHelp logo

fjolnir / tranquil Goto Github PK

View Code? Open in Web Editor NEW
320.0 21.0 17.0 4.31 MB

A language built on top of the Objective-C runtime, and ABI compatible with Objective-C.

License: Other

Objective-C 28.21% Ruby 1.82% Shell 0.63% Objective-C++ 35.22% Assembly 0.90% C 2.23% Yacc 7.86% Ragel 22.50% Rich Text Format 0.62%

tranquil's Introduction

Tranquil

This project is pretty much abandoned. It's too much work to keep up with the changing LLVM APIs

Tranquil is a programming language built on top of LLVM & the Objective-C Runtime.

It aims to provide a more expressive & easy to use way to write Mac and iOS Apps.

Its features include:

  • Compatibility with C/ObjC headers, meaning that there is no need to create special bindings for C APIs.
  • Automatic memory management.
  • Line by line debugging. (Using LLDB or GDB) — still under development, but breaking on, and stepping over source lines is supported
  • Dynamic Typing.
  • Language level concurrency support.
  • String interpolation.
  • Multiple assignment.
  • Message cascading.
  • Unlimited number range.
  • Unicode through&through (変数=123 works fine)
  • Good performance, even at this extremely early stage.
  • And more..

However, Tranquil is still extremely experimental and you shouldn't use it for anything other than exploration and learning.

How to build and run

The simplest way of getting started is to use the binary installer. Everything will be placed into /usr/local/tranquil (Requires Xcode 5.1 to be installed)

If you wish to contribute, you can use the install script instead which checks out the latest source and sets up the development environment.

> curl -fsSkL https://raw.github.com/fjolnir/Tranquil/master/Tools/install.sh | /bin/zsh
> /usr/local/tranquil/bin/tqrepl

Note: OS X ≥ 10.7 or iOS ≥ 5 is required to run compiled tranquil programs. 10.9 is required to compile.

Learning the language

To learn more about Tranquil you should read the specification and check out the tests.

You can also talk to me directly by visiting #tranquil on irc.freenode.net.

And here're a couple of examples:

Print a Mandelbrot fractal

mandelbrot = { x, y, bailout=16, maxIter=1000 |
    cr, ci = y-0.5, x
    zi, zr = 0
 
    maxIter times: {
        temp = zr*zi
        zr2, zi2 = zr^2, zi^2
        zr = zr2 - zi2 + cr
        zi = 2*temp + ci
        ^^no if zi2 + zr2 > bailout
    }
    ^yes
}
 
(-1 to: 1 withStep: 1/40) each: { y |
    (-1 to: 1 withStep: 1/40) each: { x |
        (mandelbrot(x, y) ? #● ! #◦) printWithoutNl
    }
    #"" print
}

Iterate an array

alternatives = ["Objective-C", "Ruby", "Nu", "Perl", "Python"]
alternatives each: `alternative | "Tranquil is nicer than «alternative»" print`
"Or so I hope at least." print

Reduce

sum = (0 to: 1000000) reduce: `obj, accum=0 | obj+accum`

Do two things at the same time

a = async foo()
b = bar()
whenFinished {
    "a is «a» and b is: «b»" print
}

Chain messages (Without having to return self from every method you write)

var = Character new setName: "Deckard"; setOccupation: "Blade Runner"; self

Do multiple assignment

a, b = b, a  \ Swap b&a

Return non-locally

a = {
    b = {
        ^^123
    }
    b()
    ^321
}
a() print \ This prints '123'

Calculate fibonacci numbers (In a not-so-performant manner)

fib = `n | n > 1 ? fib(n-1) + fib(n-2) ! n`
fib(10) print

Make a database query (Using DatabaseKit)

import "DatabaseKit"
db = DB withURL: "sqlite://data/database.sqlite"
query = db[#aTable] select: #field; where: { #anotherField => aValue }
val   = query[#field]

\ We can write that more concisely as:
val   = table[{ #anotherField => aValue }][#field]

Create a Web Server (Using HTTPKit)

import "HTTPKit"
HTTP new handleGet: "/"
              with: `connection| "Hello World!"`;
      listenOnPort: 8080
           onError: `"Unable to start server" print`

Evaluate a regular expression

"Foobar starts with foo." print if /foo[a-z]+/i matches: "Foobar"

Use the OpenGL & GLUT APIs

import "GLUT" \ This simply reads in your GLUT.h header. No bindings are required.

GlutInit(0, nil)
GlutInitDisplayMode(GLUT_DOUBLE)
GlutInitWindowSize(640, 480)
GlutInitWindowPosition(200, 200)
GlutCreateWindow("Tranquil is cool as beans!")

GlClearColor(0, 0, 0, 0)
GlScalef(0.4, 0.4, 0.4)

GlutDisplayFunc({
    GlRotatef(0.1, 0, 1, 0)
    GlClear(GL_COLOR_BUFFER_BIT)
    GlColor3f(0, 1, 0)
        GlutWireDodecahedron()
    GlColor3f(1, 1, 1)
        GlutWireTeapot(0.7)
    GlutSwapBuffers()
})

lastX, lastY = 0
GlutMotionFunc({ x, y |
    dx, dy = lastX - x, lastY - y
    GlRotatef(dx, 0, 1, 0)
    GlRotatef(dy, 1, 0, 0)
    lastX, lastY = x, y
})

GlutIdleFunc(GlutPostRedisplay)
GlutMainLoop()

tranquil's People

Contributors

fjolnir avatar seantallen 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  avatar  avatar  avatar  avatar

tranquil's Issues

README ambiguity

Explain the primary features of Tranquil over ObjC at the top of the README. For example, dynamic typing.

Have you considered porting GNU Smalltalk to ObjC? It's already a community supported dynamically typed language. In fact, Smalltalk is the language that inspired ObjC, so it would be nice to see it in action in iOS and Mac OS X apps.

Direct link to .pkg

Hi.

Is it possible to get a direct link to the Tranquil dmg/pkg? We are a couple of people that use xnomad and the installation has been automated by https://github.com/tazjin/puppet-xnomad but it's running an old version of xnomad.

I'm going to rewrite that puppet module and it would be great if there's a direct link to the binary. Secondly, I think a lot of people would be happy if xnomad could get combined into an xnomad.app (like its done in the link above).

Thank you for an awesome window manager!

fatal error: 'Foundation/Foundation.h' file not found

Hi! I'm on Mavericks, 10.9.5. I tried the binary install but it segfaulted; I found the thread in fjolnir/xnomad#58 and ran the pipe-curl-to-zsh script from the tranquil readme:

curl -fsSkL https://raw.github.com/fjolnir/Tranquil/master/Tools/install.sh | /bin/zsh

It got successfully all the way to the Tranquil build and then fell at a late hurdle. It got as far as installing all the following, with GMP being the last to succeed:

$ ls -l /usr/local/tranquil/
total 0
drwxr-xr-x   5 igor  admin  170  4 Nov 01:12 gmp
drwxr-xr-x   3 igor  admin  102  4 Nov 01:12 include
drwxr-xr-x   3 igor  admin  102  4 Nov 01:11 lemon
drwxr-xr-x   3 igor  admin  102  4 Nov 01:11 libffi
drwxr-xr-x   3 igor  admin  102  4 Nov 01:11 libffi-ios
drwxr-xr-x   7 igor  admin  238  4 Nov 01:11 llvm
drwxr-xr-x  14 igor  admin  476  4 Nov 01:12 src

Output of the failed build is below. I'm pretty sure my brew installation is OK (and brew doctor agrees). Wonder if you have any ideas how to fix this? Thanks very much!

Cloning Tranquil from GitHub...
Cloning into '/usr/local/tranquil/src'...
remote: Counting objects: 7648, done.
remote: Total 7648 (delta 0), reused 0 (delta 0), pack-reused 7648
Receiving objects: 100% (7648/7648), 4.30 MiB | 613.00 KiB/s, done.
Resolving deltas: 100% (3701/3701), done.
Checking connectivity... done.
Compiling...
mkdir -p /usr/local/tranquil/src/Build
ruby Source/Tranquil/gen_stubs_header.rb 32 > Build/TQStubs.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Build/TQStubs.h /usr/local/tranquil/include/Tranquil/Runtime/TQStubs.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/NSBlock+TQAdditions.h /usr/local/tranquil/include/Tranquil/Runtime/NSBlock+TQAdditions.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/NSCollections+Tranquil.h /usr/local/tranquil/include/Tranquil/Runtime/NSCollections+Tranquil.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/NSNumber+TQOperators.h /usr/local/tranquil/include/Tranquil/Runtime/NSNumber+TQOperators.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/NSObject+TQAdditions.h /usr/local/tranquil/include/Tranquil/Runtime/NSObject+TQAdditions.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/NSString+TQAdditions.h /usr/local/tranquil/include/Tranquil/Runtime/NSString+TQAdditions.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQBigNumber.h /usr/local/tranquil/include/Tranquil/Runtime/TQBigNumber.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQBlockClosure.h /usr/local/tranquil/include/Tranquil/Runtime/TQBlockClosure.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQBoxedObject.h /usr/local/tranquil/include/Tranquil/Runtime/TQBoxedObject.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQEnumerable.h /usr/local/tranquil/include/Tranquil/Runtime/TQEnumerable.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQFFIType.h /usr/local/tranquil/include/Tranquil/Runtime/TQFFIType.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQModule.h /usr/local/tranquil/include/Tranquil/Runtime/TQModule.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQNil.h /usr/local/tranquil/include/Tranquil/Runtime/TQNil.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQNothingness.h /usr/local/tranquil/include/Tranquil/Runtime/TQNothingness.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQNumber.h /usr/local/tranquil/include/Tranquil/Runtime/TQNumber.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQObject.h /usr/local/tranquil/include/Tranquil/Runtime/TQObject.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQPointer.h /usr/local/tranquil/include/Tranquil/Runtime/TQPointer.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQPromise.h /usr/local/tranquil/include/Tranquil/Runtime/TQPromise.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQProxy.h /usr/local/tranquil/include/Tranquil/Runtime/TQProxy.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQRange.h /usr/local/tranquil/include/Tranquil/Runtime/TQRange.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQRegularExpression.h /usr/local/tranquil/include/Tranquil/Runtime/TQRegularExpression.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQRootObject.h /usr/local/tranquil/include/Tranquil/Runtime/TQRootObject.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQRuntime.h /usr/local/tranquil/include/Tranquil/Runtime/TQRuntime.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQRuntimePrivate.h /usr/local/tranquil/include/Tranquil/Runtime/TQRuntimePrivate.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQValidObject.h /usr/local/tranquil/include/Tranquil/Runtime/TQValidObject.h
mkdir -p /usr/local/tranquil/include/Tranquil/Runtime
cp Source/Tranquil/Runtime/TQWeak.h /usr/local/tranquil/include/Tranquil/Runtime/TQWeak.h
mkdir -p /usr/local/tranquil/include/Tranquil/Shared
cp Source/Tranquil/Shared/TQBatching.h /usr/local/tranquil/include/Tranquil/Shared/TQBatching.h
mkdir -p /usr/local/tranquil/include/Tranquil/Shared
cp Source/Tranquil/Shared/TQDebug.h /usr/local/tranquil/include/Tranquil/Shared/TQDebug.h
mkdir -p /usr/local/tranquil/include/Tranquil/Shared
cp Source/Tranquil/Shared/khash.h /usr/local/tranquil/include/Tranquil/Shared/khash.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/CodeGen.h /usr/local/tranquil/include/Tranquil/CodeGen/CodeGen.h
mkdir -p /usr/local/tranquil/include/Tranquil/ObjcSupport
cp Source/Tranquil/CodeGen/ObjcSupport/TQHeaderParser.h /usr/local/tranquil/include/Tranquil/ObjcSupport/TQHeaderParser.h
mkdir -p /usr/local/tranquil/include/Tranquil/Processors
cp Source/Tranquil/CodeGen/Processors/TQArithmeticProcessor.h /usr/local/tranquil/include/Tranquil/Processors/TQArithmeticProcessor.h
mkdir -p /usr/local/tranquil/include/Tranquil/Processors
cp Source/Tranquil/CodeGen/Processors/TQBlockNamingProcessor.h /usr/local/tranquil/include/Tranquil/Processors/TQBlockNamingProcessor.h
mkdir -p /usr/local/tranquil/include/Tranquil/Processors
cp Source/Tranquil/CodeGen/Processors/TQDeallocInsertProcessor.h /usr/local/tranquil/include/Tranquil/Processors/TQDeallocInsertProcessor.h
mkdir -p /usr/local/tranquil/include/Tranquil/Processors
cp Source/Tranquil/CodeGen/Processors/TQInitInsertProcessor.h /usr/local/tranquil/include/Tranquil/Processors/TQInitInsertProcessor.h
mkdir -p /usr/local/tranquil/include/Tranquil/Processors
cp Source/Tranquil/CodeGen/Processors/TQMemoryManagementProcessor.h /usr/local/tranquil/include/Tranquil/Processors/TQMemoryManagementProcessor.h
mkdir -p /usr/local/tranquil/include/Tranquil/Processors
cp Source/Tranquil/CodeGen/Processors/TQProcessor.h /usr/local/tranquil/include/Tranquil/Processors/TQProcessor.h
mkdir -p /usr/local/tranquil/include/Tranquil/Processors
cp Source/Tranquil/CodeGen/Processors/TQWeakProcessor.h /usr/local/tranquil/include/Tranquil/Processors/TQWeakProcessor.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNode+Private.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNode+Private.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNode.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNode.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeArgument.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeArgument.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeArgumentDef.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeArgumentDef.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeArray.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeArray.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeAsync.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeAsync.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeBlock.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeBlock.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeCall.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeCall.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeClass.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeClass.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeCollect.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeCollect.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeConditionalBlock.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeConditionalBlock.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeConstant.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeConstant.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeCustom.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeCustom.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeDictionary.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeDictionary.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeImport.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeImport.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeLock.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeLock.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeLoopBlock.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeLoopBlock.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeMemberAccess.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeMemberAccess.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeMessage.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeMessage.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeMethod.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeMethod.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeNil.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeNil.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeNothing.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeNothing.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeNumber.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeNumber.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeOperator.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeOperator.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeRegex.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeRegex.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeReturn.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeReturn.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeString.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeString.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeValid.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeValid.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeVariable.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeVariable.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQNodeWeak.h /usr/local/tranquil/include/Tranquil/CodeGen/TQNodeWeak.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQParse.h /usr/local/tranquil/include/Tranquil/CodeGen/TQParse.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQProgram+Internal.h /usr/local/tranquil/include/Tranquil/CodeGen/TQProgram+Internal.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQProgram+LLVMUtils.h /usr/local/tranquil/include/Tranquil/CodeGen/TQProgram+LLVMUtils.h
mkdir -p /usr/local/tranquil/include/Tranquil/CodeGen
cp Source/Tranquil/CodeGen/TQProgram.h /usr/local/tranquil/include/Tranquil/CodeGen/TQProgram.h
clang Source/Tranquil/Runtime/NSBlock+TQAdditions.m -arch x86_64 -DDEBUG -Wno-objc-root-class -Wno-objc-protocol-method-implementation -Wno-cast-of-sel-type -I`pwd`/Source -I/usr/local/tranquil/include -I`pwd`/Build -I/usr/local/tranquil/gmp/include -O0 -g -mmacosx-version-min=10.7 -I/usr/local/tranquil/libffi/include -isysroot `xcrun --sdk macosx --show-sdk-path` -F`xcrun --sdk macosx --show-sdk-path`/System/Library/Frameworks/ApplicationServices.framework/Frameworks -c -o build/NSBlock+TQAdditions.o.x64 -ObjC
clang: warning: no such sysroot directory: '-F/System/Library/Frameworks/ApplicationServices.framework/Frameworks'
In file included from Source/Tranquil/Runtime/NSBlock+TQAdditions.m:1:
In file included from Source/Tranquil/Runtime/NSBlock+TQAdditions.h:1:
/usr/local/tranquil/include/Tranquil/Runtime/TQStubs.h:5:9: fatal error: 'Foundation/Foundation.h' file not found
#import <Foundation/Foundation.h>
        ^
1 error generated.
rake aborted!
Command failed with status (1): [clang Source/Tranquil/Runtime/NSBlock+TQAd...]
/usr/local/tranquil/src/Rakefile:121:in `compile'
/usr/local/tranquil/src/Rakefile:166:in `block (2 levels) in <top (required)>'
Tasks: TOP => default => tranquil => libtranquil => build/NSBlock+TQAdditions.o
(See full trace by running task with --trace)
Error building tranquil!

real    42m13.053s
user    75m54.613s
sys     3m45.839s

Parser is *incredibly* slow

Having written my first non tiny app in tranquil I noticed that the parser is unbelievably slow. (A 4 file project of < 500 lines takes almost a minute to compile)

I'm assuming it's my fault (Not greg's) so before I try switching to another parser generator (Lemon looks promising) I should try to identify what is slowing the PEG grammar down.

REPL Segfault on start

I just installed Tranquil from the binary package and I'm getting the following:

$ tranquil
zsh: segmentation fault  tranquil

I'm running 10.7.5 with brewed LLVM and a bunch of other things. I'll be trying the repo tomorrow.

Fix ABI compatibility with C

I just discovered that I'm not properly handling byval passing of structs of floats (and possibly) small ints.
structs like struct { float a,b, c; } need to be expanded to <vector 2x float>, float in order to be passed to a C function.
There are similar cases for other types.

DragonEgg&Clang might be helpful resources

Apply a range check on numbers

Apply a range check when creating number objects, so that tagged pointers are only used when precision is acceptable. (and figure out said acceptable range)

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.