« first day (216 days earlier)      last day (741 days later) » 
00:00 - 23:0023:00 - 00:00

12:02 AM
@ASCII-only yeah
btw: can you answer:
2 hours ago, by Downgoat
@ASCII-only question: in first VSL for bootstrap, do we want to do implicit casting in function calls? example: if A extends B. func f(a: B) should F(a: A()) be allowed or is needing to do F(a: A() as B) for first version OK?
4 hours ago, by Downgoat
@ASCII-only pls add function call, tanks
 
i don't want to declare name and type twice
@Downgoat ok brb
 
:D tanks
@ASCII-only oh, yeah, 10/10 very true I hate doing
 
@Downgoat so arguments are (asdf) and (asdf:ofahwofifa)?
 
yes
 
12:17 AM
@Downgoat pls test
 
@ASCII-only ok brb testing
btw bad news, greater than or equal to code is really long:
    public static func >=(lhs: Self, rhs: Self) llvm {
    define i1 <name>(<param>, <param>) alwaysinline {
    entry:
        %2 = call i1 "<methodRoot>.=="(<param> %0, <param> %1)
        br i1 %2, label %isTrue, %tryGt
    isTrue:
        ret i1 1
    isFalse:
        ret i1 0
    tryGt:
        %3 = call i1 "<methodRoot>.>"(<param> %0, <param> %1)
        br i1 %3, label %isTrue, %isFalse
    }
    }
luckily for numbers it will only be one instruction
bork alert:
vsl:parser> a.b(foo: bar)
token [ 'foo', 7 ]
readline.js:973
            throw err;
            ^

Error: foo,7
Unexpected ["foo",7]
 
hmm ok brb
@Downgoat ok fix pls rebuild and test
 
ok brb
AWW YISS IT WORK :D
ono minor bork:
                 arguments:
                  [ [ ArgumentCall {
                        parentScope: null,
                        parentNode: null,
                        queueQualifier: null,
                        arguments:
                         ExpressionStatement {
                           parentScope: null,
                           parentNode: null,
                           queueQualifier: null,
                           expression:
                            Identifier {
                              parentScope: null,
it is wrapped in extra array
 
@Downgoat oops brb
@Downgoat hmm what
 
btw pls no forgot to update get children()
super-important
also pass field name as string
 
12:26 AM
@Downgoat field name?
 
e.g.:
import Node from './node';

/**
 * Matches a subscript expression inside a PropertyExpression
 *
 * @example
 * head[tail]
 */

export default class Subscript extends Node {
    /**
     * Creates a subscript
     *
     * @param {Expression} expression the provided expression
     * @param {Object} position a position from nearley
     */
    constructor (expression: any, position: Object) {
        super(position);

        /** @type {Expression} */
        this.expression = expression;
    }
note how expression is passed as string
 
@Downgoat ok
 
ono bork alert:
vsl:transform> var a: T = f(a: b)
{
    var a: T = (f).(b)
}
but this time bork goat fault :(
 
@Downgoat why did you do ternary wrong way around
 
wat
 
12:30 AM
i fix to this.name ? ${this.name}: ${this.value}` : `${this.value}``
 
ono shit
thanks for fix
aww yiss partial work:
vsl:transform> var a: T = f(a: b)
{
    var a: T = (f).(a,7: b)
}
looks like you need to unwrap the identifier
are you using %identifier or Identifier in grammar?
 
@Downgoat changed to %identifier already
ok added [0] to unwrap
 
ok that work
hm
actually do Identifier
 
@Downgoat :| but has scopeitem
 
yes that is good no?
or fine we don't actually need
nvm
@ASCII-only btw I put vsl on npm so you can do npm i -g vsl, current version 0.0.1-alpha.5
 
12:34 AM
yay
 
bork alert:
vsl:transform> f(a: b)
readline.js:973
            throw err;
            ^

TypeError: Cannot read property '0' of null
    at new ArgumentCall (/home/ubuntu/workspace/lib/vsl/parser/nodes/argumentCall.js:60:26)
 
oh ok
@Downgoat ok fix
 
@ASCII-only can you rename to ArrayNode because Array is taken by JS
I mean it'll let you do it but now we can't do Array
 
@Downgoat ok
 
aww yiss:
vsl:transform> f(a: b)
{
    (f).(a: b)
}
btw:
3 hours ago, by Downgoat
@ASCII-only question: in first VSL for bootstrap, do we want to do implicit casting in function calls? example: if A extends B. func f(a: B) should F(a: A()) be allowed or is needing to do F(a: A() as B) for first version OK?
if we do latter, I can maybe get basic VSL LLVM generator by end of month
 
12:39 AM
@Downgoat implicit upcast should be allowed yeah
 
@ASCII-only yeah, but do we want in very first primitive bootstrap version
implicit cast is hard :(
 
then no i guess
 
ok, will work on type calculator
wait shit
ono problem
halp hard
problem: type reosolver needed to mangle and mangle needed to type resolve
so infinite problem loop
 
:|
@Downgoat why need to mangle
 
well not really mangling but just resolving overloads
functions barely have mangle:
vsl:transform> func f(a: T, b: U) internal(linkage)
{
    func f(a:T, b:U)(a: T, b: U) internal(linkage)
}
the name of the function is f(a:T, b:U) which is pretty easy to read
btw do we want to use C calling convention
@ASCII-only are we going to have UDP?
user-define primitive
 
12:51 AM
pls example
 
like custom user-define priitive
like i can define literal like maybe: #startgoat pathtogoatmeme endgoat# and will be primtiive
maybe like:
@primitive(/#startgoat.+?#endgoat/)
public class GoatLiteral {
    init(from primitive: Token) { ... }
}
 
:| how will we parse
 
idk
:| wait shit good question
 
do we just modify parser after we see
 
yeah maybe
idk :|
 
12:53 AM
would work for js but what about compiled parser
hmmmmmmmmm
 
maybe tokenizer will have override for "@" "primtive" %regex
 
yeah i mean the JS one shouldn't be too hard but how do we modify compiled parser
 
>_> idk good question
 
One of the benefits of being a language that can be compiled or interpreted :P
 
@ASCII-only well it can be compile-time thing
as the tokenizer is tokenizing we'll add a token to the tokenizer to tokenize the token based on what the tokenizer tokenizes
 
12:58 AM
@Downgoat 0/10 vrey confus
 
;_; ono
ok well user define primitive is far off will not include in v1
 
i think extensible syntax is good and all
 
:OOOOO I just realize why babel plugin wildacrd is bast thing evar :O
we can store the AST
and compare it as string
and then VSL can check changes
 
> compare it as string
This sounds bad
 
dont wory is deterministic
though we wont do that
that is just for store mesage
what im saying is that our AST is serializable
 
1:46 AM
@Downgoat halp charcoal is infinite bork i need your grammar debug skills pls
 
Halo
 
bork bork
 
:O quartata is dog confirm?
 
@Downgoat you mean chicken
 
:OOO
 
1:54 AM
@Downgoat pls halp?
 
Ok
Halp, how to halp
 
@Downgoat :| not helping
 
2:35 AM
@Downgoat full wolfram mode for charcoal: good idea or bad idea
 
 
1 hour later…
3:55 AM
@ASCII-only idk
i mean i think ok idea but shouldn't be near top of priority lit
 
@Downgoat ok
 
 
11 hours later…
3:24 PM
@ASCII-only each argument still wrapped in extra array and empty function call fail
 
4:03 PM
ok so interfaces like:
interface Goat {
     public func f(a: T)
}
would be like:
define void MySubclass.method.f(T* a) { ... }
struct Goat g = { &MySubclass.method.f }
this would be easiest way to implement dynamic dispatch
(implement it at compile-time)
@ASCII-only halp how dynamic dispatch
what if I do super.foo
how to access superclass stufs
wat 0/10 very dificult
wait nvm very simple
hard quesiton is access super field
@ASCII-only we can't do overriding field because impossible
btw we should really setup unit tests
otherwise you'll get a cheddar
where everything is bug
@ASCII-only is there way to feed the parser a custom string of tokens
 
5:00 PM
@ASCII-only see src/vsl/resolver/README.md for overview on how type deductor will work
 
5:13 PM
@ASCII-only :OOOO I FIGURE OUT TYPE DEDUCTION AWWW YISS
 
5:40 PM
@ASCII-only okay good news: make big progress on type deduction
bad news: we need to make negotiator for every node in expression
@ASCII-only question: should we allow:
var mycstring: CString = "halo"
or should you have to do:
var mycstring: CString = "halo".cPointer
example type resolveer:
import ConstaintType from '../constaintType';
import TypeConstraint from '../typeConstraint';
import TypeResolver from '../typeResolver';

/**
 * Resolves `ExpressionStatement`s
 */
export default class RootResolver extends TypeResolver {

    /**
     * @param {function(offer: ConstraintType): ?TypeConstaint} negotiator - The
     *     function which will handle or reject all negotiation requests. Use
     *     `{ nil }` to reject all offers (bad idea though).
     */
    constructor(
        node: Node,
this negotiator pattern I thought of is really great 10/10
it allows nodes to talk back and forth about each other
 
6:13 PM
wow ok this is going along really well
 
6:44 PM
good news: it borks correctly
so that means it is working :P
ono borker not borking ;_;
:D wait actually work just blame hoove
halp hoov is horible curse
 
Play NetHack in real life and polymorph yourself and hope that you become a human
 
nah being goat is beter than human
AWW YISS TYPE DEDUCT DO WORK
well kind of work
okay so now let me work on scoping
if I can get this done today that will be reaallllyyy good
@ASCII-only what types go in Literal class, doing type deduction and need to know what to assign to
@ASCII-only halp wat are these:
SpecialArgument: 4,
SpecialLoop: 5,
SpecialIdentifier: 6,
@ASCII-only btw parser doesn't handle the Regex token, it should probably be wrapped in literal
@ASCII-only :OOOOO thowing errror that id is undefined work!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$ ./vsl -r
vsl:transform> var a = b
readline.js:973
            throw err;
            ^

Error: Use of undeclared identifier b
working more on type deduction but we really need to have a lot of the language implemented
I was thinking on having a ScopeItem.setlink(this.node) which will help rename nodes
@ASCII-only okay we will have to hoist master module scope
meaning we actually have to apparently get stl working
shit have to do inheritance ;_;
okay brb
 
8:22 PM
okay
so I will work on scoping now
mangling seems to need to be swapped around
property expressions are essentially type type type. so we can evaluate w/ chain + scope specifier
@ASCII-only okay so I have mutual type deduction worked out :D:
func f(a: Int) -> Double
func f(a: Double) -> Int
var a = 1.0
var b = f(a)
var c: Double c
okay so I'll use custom hash map kinda sorta maybe thing
 
8:55 PM
@ASCII-only okay doing meta classes now, not sure how exactly will compile, may not even have compile state but idk we'll see
@ASCII-only do we want to have equivilent of java object
i.e. main class
actually brb doing
calling "Any"
btw @ASCII-only: strawpoll.me/13015408
@ASCII-only btw doing LLVM generation for functions later, will focus on getting basic expression working e.g. 1 + 1
 
Anonymous
9:17 PM
2 messages moved from The Nineteenth Byte
 
Idea: Still call it Object, but alias ? to Object.
 
? is already alias to identifier "wat"
 
Why do you have an identifier wat
 
> Use of undeclared identifier undefined
 
Kudraitsev iirc
I think you should remove that since ?. is the null-safe operator and you don't want to have confusion with wat., also it's stupid.
The null-safe operator is a pretty good argument against my idea too though, so that's out.
I like the idea of having an alias for Object though. any is fine there. I can imagine it being good practice to use any in parameter types and generics and Object in variable and return types.
 
9:32 PM
@Phoenix well you can always add a public typealias AnyGoat = Any/Object/whateveritscaalled
@Phoenix Question: what was your username before you change? I totally forgot
 
@Downgoat Pavel
 
>_< ah yes, duh
 
@Downgoat Why stop at typealias? I'd love to be able to have bash-like aliasing.
 
you mean like #define?
 
Yes.
 
9:42 PM
I really do want to have a powerful preprocessor for VSL
I was thinking of "preprocessor" variable and all
e.g.:
print "Source file name was: #{#sourcefile} on #{#date}"
 
Except #define is static for a section of code and alias can dynamically change.
 
hm
 
Which is a minor difference that shouldn't matter all that much if you're trying to not write spaghetti code, but still.
 
well I'll have to see how it plays with ASM
I'm already having problems with dynamic dispatch
 
Oh right compiled
then #define makes more sense
 
9:45 PM
@Phoenix JIT
though at the current rate vsl being very fast
I think I might be able to get near C++ speed
classes are compiled super efficiently
 
With JIT? IDK
 
I haven't really considered memory efficiency though
@Phoenix well compilde part
you can compile or JIT
 
Java has AOT compilation now in Java 9.
 
java was already AOT?
 
9:51 PM
well bytecode is JIt execute on VM
so JVM does JIT
> jaotc
 
I know it's terrible
 
brb jaotcing my code ( Í¡° ͜ʖ Í¡°)
:O almost soung like gaotc
:OOOOOOOOOOOOOOOO
@ASCII-only sory for so many ping >)<
 
So the solution is more ping
Obviously
 
@Phoenix Wait, really?
 
Yep
See link below
 
10:06 PM
There's a lot of very good commercial Java AOT compilers that will be very sad
 
15 mins ago, by Downgoat
> jaotc
Also, 66 days until Java 9!
:D
 
D:
 
D: ?
 
sorry just wanted symetrical smilies :P
 
There's also going to be a new proccess api
Process proc = Runtime.getRuntime().exec(new String[] {
"/bin/sh",
"-c",
"echo $PPID"
});

if (proc.waitFor() == 0) {
InputStream in = proc.getInputStream();
int available = in.available();
byte[] outputBytes = new byte[available];

in.read(outputBytes);
String pid = new String(outputBytes);

System.out.println("Your pid is " + pid);
}
will become System.out.println("Your pid is " + Process.getCurrentPid());
 
10:12 PM
suggestion: node already has so you should use node
 
better solution: use C#
 
but c# only work on window
 
.NET Core or Mono, take your pick.
 
but Mono is like 0 stable
 
Then use .NET Core
 
10:16 PM
.NET Core also like 0 stable
 
It's pretty stable
 
but crash and bug
and bork
and wat
 
It doesn't do that
It's pretty good now
 
it also pretty bloat right
 
Well, a little bit. But not more so than Java.
 
10:20 PM
huh
 
A lot of features that are part of the .NET framework were removed.
 
I'll stick with vsl
VSL has full CCC support
 
CCC?
 
C ABI
 
Was that supposed to be API
 
10:21 PM
no
In computer software, an application binary interface (ABI) is the interface between two program modules, one of which is often a library and/or operating system and the other one is usually an application created by a regular programmer. In contrast to an API, which defines structures and methods one can use at software level, an ABI defines the structures and methods used to access external, already compiled libraries/code at the level of machine code. It does this by determining in which binary format information should be passed from one program component to the next, or to the operating system...
 
Ah
So you can use the C++ standard library?
 
you can use C standard lib
C++ has its own ABI so I'll have to look into that but definetly a plan
 
Does the C/++ stdlib support graphics and such?
@Downgoat Github blocked on this computer :_;
But still cool
 
@Phoenix I mean if it's a C function you can call it
for example if I wanted to use C's strcmp I would do:
public func strcmp(s1: CString, s2: CString) -> Int internal(strcmp)
internal(strcmp) specifies what it's called in C
 
I see. Why Int and not int though.
Also, C String is char*
 
10:27 PM
@Phoenix well Int is treated exactly like class (even though internally it is not)
@Phoenix yeah?
 
How does it know the difference between a string and a char pointer.
 
meaning?
CString is defined as:
public typealias CString = Pointer<Char>
you can convert a string to a CString using "hello".cString or even "hello".rawPointer
 
I see.
 
if you do let a: CString = "test" that works too though
 
I GTG, o/
 
10:30 PM
@Phoenix bai, .o/
@ASCII-only shit we have to do meta class ;_;
okay I'll just throw generator error if encounter
 
@Downgoat nvm remembered I have a smartphone
 
:D
 
@Downgoat Eh? What is meta class?
 
like class of clas
I think in java it's Class<T>
 
Ah
 
10:40 PM
ok I've added a "MetaClass" type but current there is no support for meta class refs
 
You don't really need reflection, eventually yes, but not as a priority.
 
@ASCII-only halo .o/
 
@Downgoat halp ping overload
 
ono
maybe update ping buffer in brain to UInt64 maybe
7 hours ago, by Downgoat
@ASCII-only each argument still wrapped in extra array and empty function call fail
you can start there >_<
long story short: did a big progress today
have type deductor
So next step is:
 
type deductor like c++ auto or C# var ?
 
10:46 PM
@Phoenix like C# var I think
C++ is not real type deduction
we have uber-awesome type deduction
e.g.:
func f(a: Int) -> String { ... }
func f(a: Double) -> Int { ... }

let a: String = f(a: f(a: 5))
 
github still blocked ;-;
 
ono
brb taking screenshot
actually copy pasted:
# Type Resolver
These are a series of classes and functions which serve to perform type
deduction on `ExpressionStatement`s. Because examples such as these exist:

```swift
var a: T = b
```

where `typeof b is T`, the `T` context is needed to perform the cast. These are
considered as "Context Constriants" which are generate as much as possible, then
one-by-one each is resolved. If ambiguity or no applicable type could be fount
then an error is thrown.

## Process
There are two main processes:

 - Constraints
 
TY
It seems in the example you still need to say that a particular variable's type
 
oh that was eaxmple lemme pull out other example
shit lost example
ok example #2:
func f(a: Double) -> Void { ... }

var a = 1
f(a: a)
a is implicitly become 1
 
neato.
 
10:51 PM
Wait shit mean double
 
tbh I still like C/++/# variables more, with int a and not var a : int
 
Well VSL is strictly typed but major implicit typing
 
You could do it like C#
You only need the type specified if you're declaring a variable without assigning anything to it.
 
Yeah but doesn't work well for tuple or lambda type
Doing Dictionary<K, V> is ugly [K: V] is 10:10 great
 
@Downgoat That's a minor detail, obviously would need to be fixed for VSL, but the syntax I like.
@Downgoat Sure, I don't see how that has anything to do with the discussion we're having.
 
10:56 PM
@Downgoat pls show console log of double array
@Downgoat no
it conflicts with Int[] because different style
 
@Phoenix well doing [K: V] myDict = goat is weird
@ASCII-only ?
 
Why not var myDict = goat
 
V[K] maybe, probably also bad idea
@Phoenix that will be in vsl
 
@Phoenix I can do that but what if I want to specify type
 
It implies that from goat's type.
 
10:58 PM
@Phoenix ...
What if you do var myDict
What type would it be
 
@ASCII-only btw:
4 hours ago, by Downgoat
@ASCII-only halp wat are these:
 
@ASCII-only Well, then you need to specify type, no other way around it.
 
2 hours ago, by Downgoat
@ASCII-only do we want to have equivilent of java object
 
@Phoenix exactly. How would we specify dictionary type though?
@Downgoat yeah
 
My original point is that int foo is better than var foo : int, IDK where the dictionary discussion came from.
 
00:00 - 23:0023:00 - 00:00

« first day (216 days earlier)      last day (741 days later) »