Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ backend/test/queue_unit_tests
backend/test/skiplist_test
backend/test/test_client

builtin/__builtin__.h
builtin/__builtin__.c

compiler/actonc
compiler/package.yaml
compiler/tests/*.ty
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -526,8 +526,8 @@ dist/types/__builtin__.ty: builtin/ty/out/types/__builtin__.ty
builtin/ty/out/types/__builtin__.ty: builtin/ty/src/__builtin__.act $(ACTONC)
@mkdir -p $(dir $@)
$(ACTC) --always-build $<
cp builtin/ty/out/types/__builtin__.h builtin/__builtin__.h
cat builtin/ty/out/types/__builtin__.c builtin/__builtin__ADD.c > builtin/__builtin__.c
cp builtin/ty/out/types/__builtin__.h builtin/__builtin__.h
cp builtin/ty/out/types/__builtin__.c builtin/__builtin__.c

# Build our standard library
stdlib/out/dev/lib/libActonProject.a: $(STDLIB_SRCFILES) dist/types/__builtin__.ty $(DIST_HFILES) $(ACTONC) $(DEPSA) $(LIBGC)
Expand Down
16 changes: 0 additions & 16 deletions builtin/__builtin__ADD.c

This file was deleted.

1 change: 1 addition & 0 deletions builtin/atom.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
*/

struct B_atomG_class B_atomG_methods = {
0,
"B_atom",
UNASSIGNED,
($SuperG_class)&B_valueG_methods
Expand Down
4 changes: 2 additions & 2 deletions builtin/bool.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/


GC_word B_boolD_gcbm[GC_BITMAP_SIZE(struct B_bool)];

// Serialization ///////////////////////////////////////////////////////////////////////

Expand Down Expand Up @@ -52,7 +52,7 @@ B_bool B_boolG_new(B_value s) {
}

B_bool toB_bool(long b) {
B_bool res = malloc(sizeof(struct B_bool));
B_bool res = GC_MALLOC_EXPLICITLY_TYPED(sizeof(struct B_bool), B_boolG_methods.$GCdescr);
res->$class = &B_boolG_methods;
res->val = b;
return res;
Expand Down
1 change: 1 addition & 0 deletions builtin/bool.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ struct B_bool {
struct B_boolG_class *$class;
long val;
};
extern GC_word B_boolD_gcbm[GC_BITMAP_SIZE(struct B_bool)];

B_bool toB_bool(long b);
long fromB_bool(B_bool b);
Expand Down
15 changes: 5 additions & 10 deletions builtin/builtin_functions.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,7 @@ B_IteratorD_enumerate B_IteratorD_enumerate$_deserialize(B_IteratorD_enumerate r
return NULL;
}

struct B_IteratorD_enumerateG_class B_IteratorD_enumerateG_methods = {"B_IteratorD_enumerate",UNASSIGNED,($SuperG_class)&B_IteratorG_methods,B_IteratorD_enumerate_init,
B_IteratorD_enumerate_serialize, B_IteratorD_enumerate$_deserialize,
struct B_IteratorD_enumerateG_class B_IteratorD_enumerateG_methods = {0,"B_IteratorD_enumerate",UNASSIGNED,($SuperG_class)&B_IteratorG_methods,B_IteratorD_enumerate_init, B_IteratorD_enumerate_serialize, B_IteratorD_enumerate$_deserialize,
B_IteratorD_enumerate_bool,B_IteratorD_enumerate_str,B_IteratorD_enumerate_str, B_IteratorD_enumerate_next};


Expand Down Expand Up @@ -143,8 +142,7 @@ B_IteratorD_filter B_IteratorD_filter$_deserialize(B_IteratorD_filter res, $Seri
return w;
}

struct B_IteratorD_filterG_class B_IteratorD_filterG_methods = {"B_IteratorD_filter",UNASSIGNED,($SuperG_class)&B_IteratorG_methods,B_IteratorD_filter_init,
B_IteratorD_filter_serialize, B_IteratorD_filter$_deserialize,
struct B_IteratorD_filterG_class B_IteratorD_filterG_methods = {0,"B_IteratorD_filter",UNASSIGNED,($SuperG_class)&B_IteratorG_methods,B_IteratorD_filter_init, B_IteratorD_filter_serialize, B_IteratorD_filter$_deserialize,
B_IteratorD_filter_bool,B_IteratorD_filter_str,B_IteratorD_filter_str, B_IteratorD_filter_next};

B_IteratorD_filter B_IteratorD_filterG_new(B_Iterator it, $pure f) {
Expand Down Expand Up @@ -192,8 +190,7 @@ B_IteratorD_map B_IteratorD_map$_deserialize(B_IteratorD_map res, $Serial$state
return NULL;
}

struct B_IteratorD_mapG_class B_IteratorD_mapG_methods = {"B_IteratorD_map",UNASSIGNED,($SuperG_class)&B_IteratorG_methods,B_IteratorD_map_init,
B_IteratorD_map_serialize, B_IteratorD_map$_deserialize,
struct B_IteratorD_mapG_class B_IteratorD_mapG_methods = {0,"B_IteratorD_map",UNASSIGNED,($SuperG_class)&B_IteratorG_methods,B_IteratorD_map_init, B_IteratorD_map_serialize, B_IteratorD_map$_deserialize,
B_IteratorD_map_bool,B_IteratorD_map_str,B_IteratorD_map_str, B_IteratorD_map_next};

B_IteratorD_map B_IteratorD_mapG_new(B_Iterator it, $pure f) {
Expand Down Expand Up @@ -293,8 +290,7 @@ B_IteratorD_zip B_IteratorD_zip$_deserialize(B_IteratorD_zip res, $Serial$state
return NULL;
}

struct B_IteratorD_zipG_class B_IteratorD_zipG_methods = {" B_IteratorD_zip",UNASSIGNED,($SuperG_class)&B_IteratorG_methods,B_IteratorD_zip_init,
B_IteratorD_zip_serialize, B_IteratorD_zip$_deserialize,
struct B_IteratorD_zipG_class B_IteratorD_zipG_methods = {0," B_IteratorD_zip",UNASSIGNED,($SuperG_class)&B_IteratorG_methods,B_IteratorD_zip_init, B_IteratorD_zip_serialize, B_IteratorD_zip$_deserialize,
B_IteratorD_zip_bool,B_IteratorD_zip_str,B_IteratorD_zip_str, B_IteratorD_zip_next};

B_IteratorD_zip B_IteratorD_zipG_new(B_Iterator iter1, B_Iterator iter2) {
Expand Down Expand Up @@ -325,8 +321,7 @@ B_bool B_EqOptD___ne__(B_EqOpt wit, $WORD a, $WORD b) {
return (!a && !b) ? B_False : B_True;
}

struct B_EqOptG_class B_EqOptG_methods = {"B_EqOpt", UNASSIGNED, NULL, B_EqOptD___init__, B_EqOptD___eq__, B_EqOptD___ne__};

struct B_EqOptG_class B_EqOptG_methods = {0,"B_EqOpt", UNASSIGNED, NULL, B_EqOptD___init__, B_EqOptD___eq__, B_EqOptD___ne__};

B_EqOpt B_EqOptG_new(B_Eq W_Eq$A) {
return $NEW(B_EqOpt, W_Eq$A);
Expand Down
20 changes: 15 additions & 5 deletions builtin/builtin_functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ struct B_IteratorD_enumerate;
typedef struct B_IteratorD_enumerate *B_IteratorD_enumerate;

struct B_IteratorD_enumerateG_class {
char *$GCINFO;
GC_descr $GCdescr;
char *$name;
int $class_id;
$SuperG_class $superclass;
void (*__init__)(B_IteratorD_enumerate, B_Iterator,B_int);
Expand All @@ -25,6 +26,7 @@ struct B_IteratorD_enumerate {
B_Iterator it;
int nxt;
};
extern GC_word B_IteratorD_enumerateD_gcbm[GC_BITMAP_SIZE(struct B_IteratorD_enumerate)];

extern struct B_IteratorD_enumerateG_class B_IteratorD_enumerateG_methods;
B_IteratorD_enumerate B_IteratorD_enumerateG_new(B_Iterator,B_int);
Expand All @@ -38,7 +40,8 @@ struct B_IteratorD_filter;
typedef struct B_IteratorD_filter *B_IteratorD_filter;

struct B_IteratorD_filterG_class {
char *$GCINFO;
GC_descr $GCdescr;
char *$name;
int $class_id;
$SuperG_class $superclass;
void (*__init__)(B_IteratorD_filter, B_Iterator, $pure);
Expand All @@ -55,6 +58,7 @@ struct B_IteratorD_filter {
B_Iterator it;
$pure f;
};
extern GC_word B_IteratorD_filterD_gcbm[GC_BITMAP_SIZE(struct B_IteratorD_filter)];

extern struct B_IteratorD_filterG_class B_IteratorD_filterG_methods;
B_IteratorD_filter B_IteratorD_filterG_new(B_Iterator, $pure);
Expand All @@ -67,7 +71,8 @@ struct B_IteratorD_map;
typedef struct B_IteratorD_map *B_IteratorD_map;

struct B_IteratorD_mapG_class {
char *$GCINFO;
GC_descr $GCdescr;
char *$name;
int $class_id;
$SuperG_class $superclass;
void (*__init__)(B_IteratorD_map, B_Iterator, $pure);
Expand All @@ -84,6 +89,7 @@ struct B_IteratorD_map {
B_Iterator it;
$pure f;
};
extern GC_word B_IteratorD_mapD_gcbm[GC_BITMAP_SIZE(struct B_IteratorD_map)];

extern struct B_IteratorD_mapG_class B_IteratorD_mapG_methods;
B_IteratorD_map B_IteratorD_mapG_new(B_Iterator, $pure);
Expand All @@ -94,7 +100,8 @@ struct B_IteratorD_zip;
typedef struct B_IteratorD_zip *B_IteratorD_zip;

struct B_IteratorD_zipG_class {
char *$GCINFO;
GC_descr $GCdescr;
char *$name;
int $class_id;
$SuperG_class $superclass;
void (*__init__)(B_IteratorD_zip, B_Iterator, B_Iterator);
Expand All @@ -111,6 +118,7 @@ struct B_IteratorD_zip {
B_Iterator it1;
B_Iterator it2;
};
extern GC_word B_IteratorD_zipD_gcbm[GC_BITMAP_SIZE(struct B_IteratorD_zip)];

extern struct B_IteratorD_zipG_class B_IteratorD_zipG_methods;
B_IteratorD_zip B_IteratorD_zipG_new(B_Iterator, B_Iterator);
Expand All @@ -124,7 +132,8 @@ struct B_EqOpt;
typedef struct B_EqOpt *B_EqOpt;

struct B_EqOptG_class {
char *$GCINFO;
GC_descr $GCdescr;
char *$name;
int $class_id;
$SuperG_class $superclass;
void (*__init__)(B_EqOpt, B_Eq);
Expand All @@ -136,6 +145,7 @@ struct B_EqOpt {
struct B_EqOptG_class *$class;
B_Eq W_Eq$A;
};
extern GC_word B_EqOptD_gcbm[GC_BITMAP_SIZE(struct B_EqOpt)];

B_EqOpt B_EqOptG_new(B_Eq);

Expand Down
9 changes: 4 additions & 5 deletions builtin/class_hierarchy.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,19 @@ B_NoneType B_objectD___init__ (B_object self) {
*/
B_str B_valueD___str__(B_value self) {
char *s;
asprintf(&s,"<%s object at %p>",self->$class->$GCINFO,self);
asprintf(&s,"<%s object at %p>",self->$class->$name,self);
return to$str(s);
}

B_str B_valueD___repr__(B_value self) {
char *s;
asprintf(&s,"<%s object at %p>",self->$class->$GCINFO,self);
asprintf(&s,"<%s object at %p>",self->$class->$name,self);
return to$str(s);
}

B_str B_objectD___str__(B_object self) {
char *s;
asprintf(&s,"<%s object at %p>",self->$class->$GCINFO,self);
asprintf(&s,"<%s object at %p>",self->$class->$name,self);
return to$str(s);
}

Expand All @@ -61,8 +61,7 @@ B_bool B_objectD___bool__(B_object self) {
return B_True;
}

struct $SerializableG_class $SerializableG_methods = {"$Serializable",UNASSIGNED,NULL, $SerializableD___init__,NULL,NULL};

struct $SerializableG_class $SerializableG_methods = {0,"$Serializable",UNASSIGNED,NULL, $SerializableD___init__,NULL,NULL};
//struct B_valueG_class B_valueG_methods = {"B_value",UNASSIGNED,($SuperG_class)&$SerializableG_methods,B_valueD___init__,NULL,NULL, B_valueD___bool__,B_valueD___str__,B_valueD___str__};

//struct B_objectG_class B_objectG_methods = {"B_object",UNASSIGNED,($SuperG_class)&B_valueG_methods,B_objectD___init__,NULL,NULL,B_objectD___bool__,B_objectD___str__,B_objectD___str__};
12 changes: 9 additions & 3 deletions builtin/class_hierarchy.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,25 @@


struct $SuperG_class {
char *$GCINFO;
GC_descr $GCdescr;
char *$name;
int $class_id;
$SuperG_class $superclass;
};

struct $Super {
$SuperG_class $class;
};
extern GC_word $SuperD_gcbm[GC_BITMAP_SIZE(struct $Super)];

/*
typedef struct $InitializableG_class *$InitializableG_class;

typedef struct $Initializable *$Initializable;

struct $InitializableG_class {
char *$GCINFO;
GC_descr $GCdescr;
char *$name;
int $class_id;
$SuperG_class $superclass; // = NULL
B_NoneType (*__init__)($Initializable);
Expand All @@ -28,6 +31,7 @@ struct $InitializableG_class {
struct $Initializable {
struct $InitializableG_class *$class;
};
extern GC_word $InitializableD_gcbm[GC_BITMAP_SIZE(struct $Initializable)];

extern struct $InitializableG_class $InitializableG_methods;
$Initializable $InitializableG_new();
Expand All @@ -36,7 +40,8 @@ extern struct $InitializableG_class $InitializableG_methods;
// Serializable //////////////////////////////////////////////////////

struct $SerializableG_class {
char *$GCINFO;
GC_descr $GCdescr;
char *$name;
int $class_id;
$SuperG_class $superclass; // = InitializableG_methods
B_NoneType (*__init__)($Serializable);
Expand All @@ -47,6 +52,7 @@ struct $SerializableG_class {
struct $Serializable {
struct $SerializableG_class *$class;
};
extern GC_word $SerializableD_gcbm[GC_BITMAP_SIZE(struct $Serializable)];

extern struct $SerializableG_class $SerializableG_methods;
$Serializable $SerializableG_new();
Expand Down
9 changes: 8 additions & 1 deletion builtin/complex.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

GC_word B_complexD_gcbm[GC_BITMAP_SIZE(struct B_complex)];

B_complex toB_complex(complex double c) {
B_complex res = malloc(sizeof(struct B_complex));
B_complex res = GC_MALLOC_EXPLICITLY_TYPED(sizeof(struct B_complex), B_complexG_methods.$GCdescr);
res->$class = &B_complexG_methods;
res->val = c;
return res;
Expand Down Expand Up @@ -191,6 +193,7 @@ struct B_EqD_complex B_EqD_complex_instance;
struct B_HashableD_complex B_HashableD_complex_instance;

struct B_NumberD_complexG_class B_NumberD_complexG_methods = {
0,
"B_NumberD_complex",
UNASSIGNED,
($SuperG_class)&B_NumberG_methods,
Expand Down Expand Up @@ -219,6 +222,7 @@ struct B_NumberD_complex B_NumberD_complex_instance = {&B_NumberD_complexG_metho
B_NumberD_complex B_NumberD_complexG_witness = &B_NumberD_complex_instance;

struct B_DivD_complexG_class B_DivD_complexG_methods = {
0,
"B_DivD_complex",
UNASSIGNED,
($SuperG_class)&B_DivG_methods,
Expand All @@ -236,6 +240,7 @@ struct B_DivD_complex B_DivD_complex_instance = {&B_DivD_complexG_methods};
B_DivD_complex B_DivD_complexG_witness = &B_DivD_complex_instance;

struct B_MinusD_NumberD_complexG_class B_MinusD_NumberD_complexG_methods = {
0,
"B_MinusD_NumberD_complex",
UNASSIGNED,
($SuperG_class)&B_MinusG_methods,
Expand All @@ -252,6 +257,7 @@ struct B_MinusD_NumberD_complex B_MinusD_NumberD_complex_instance = {&B_MinusD_N
B_MinusD_NumberD_complex B_MinusD_NumberD_complexG_witness = &B_MinusD_NumberD_complex_instance;

struct B_EqD_complexG_class B_EqD_complexG_methods = {
0,
"B_EqD_complex",
UNASSIGNED,
($SuperG_class)&B_EqG_methods,
Expand All @@ -268,6 +274,7 @@ struct B_EqD_complex B_EqD_complex_instance = {&B_EqD_complexG_methods};
B_EqD_complex B_EqD_complexG_witness = &B_EqD_complex_instance;

struct B_HashableD_complexG_class B_HashableD_complexG_methods = {
0,
"B_HashableD_complex",
UNASSIGNED,
($SuperG_class)&B_HashableG_methods,
Expand Down
1 change: 1 addition & 0 deletions builtin/complx.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ struct B_complex {
struct B_complexG_class *$class;
complex double val;
};
extern GC_word B_complexD_gcbm[GC_BITMAP_SIZE(struct B_complex)];

B_complex toB_complex(complex double c);

Loading