Skip to content

Nerves support#400

Merged
ityonemo merged 2 commits into
0.10.0from
nerves_support
Jul 19, 2023
Merged

Nerves support#400
ityonemo merged 2 commits into
0.10.0from
nerves_support

Conversation

@ityonemo

Copy link
Copy Markdown
Collaborator

No description provided.

@ityonemo ityonemo merged commit 0f727c1 into 0.10.0 Jul 19, 2023
ityonemo added a commit that referenced this pull request Jul 27, 2023
* bump version and write first semantic analysis test

* basic test on semantic analysis

* add sema test files

* tests against semantic analysis basics

* major deletions and temporary movement of old code

* repacking and managing sigil_z

* moves sema into integration, adds sigil_z tests

* uses zig json to communicate types

* integers up to u64 can be correctly marshalled

* gets tuples and maps working

* gets tuples and maps working

* wrap/unwrap out of ints and make ints correct

* integer range testingn

* adds checking on large integers

* enum conversions working well

* enum type and conversion code

* nan and inf support for floating points

* adds code files for change

* bool support on the way to struct support

* begin process of rebuilding zig parser

* begins process of using pegasus-parsed zig

* adds support for understanding basic tests

* first commit

* integration of zig_parser

* clears out all errors

* basic in/out functionality implemented

* first array tests working

* gets basic arrays working

* successful get of mutable array

* array error identification test

* tests error messages on array marshalling

* initial attempt at support for mutable structs

* basic nullable tests

* completes basic slice tests, disables broken datastructure tests

* clean up old tests, impl fastlane for array makes

* completed fastlanes for slices

* adds support for mutable struct

* basic manypointer input completed

* manypointer compile error and sentinel support

* repairs struct datastructure

* completes out manypointer tests

* tests against comptime int and comptime float

* cpointers work for single structs

* support for inputs of various pointers

* completes happy path for cpointer; still need to handle errors

* completes error testing on c pointers

* refactors make to take a make option

* bringing 'get' up to speed with internal error marshalling

* get reform for all basic types

* cleanup for all basic types with name resolution

* slices working

* fixes struct error reporting

* completes get checking routines

* updates to new error format

* adds support for void returns

* easy_c enablement

* enables aliasing

* refactors type serialization

* slice output as binary now supported

* fixes array form errors

* adds tests on error atom and error pair

* 0.10.0 dev erlang (#346)

* memory leak testing, but no provisions for cleanup

* leak checks on function ingress

* makes it so that recompilation purges modules, ensuring that the new code propagates

* converts over to pushing results to get_result tag

* compilation working, now need to implement cleanup methods

* begins creating parse transform code

* extracts zig compiler instructions out of the parse transform info

* generalizes building skeletons for ast

* basic rebuilded erlang

* put eex into the list of applications

* adds eex into required libs

* adds eex capability

* Path.to_string -> to_string

* instrument sema

* updates refactoring, with inspection

* adds in fetching of zig executable

* make sure logger is started

* investigate sema error

* better command reporting

* better src dir handling

* rename src_dir to code_dir

* look at ast

* fix stray do

* redo some parse transform bits

* ensures jason lib

* updates jason and creates ability to load jason lib

* instrument compiler results

* more instrumentation

* fixes library resolution

* fixes transitive dependency issue

* make sure the parser is fed a binary

* allows customization of ebin_dir

* changes to use proper overlay strategy

* use priv_dir for erlang

* better treatment of priv dir

* proper parse transform ordering

* debug

* makes zig code work correctly now

* typo

* correct sort_by semantics

* ast watching

* do this segment correctly

* add->append

* passes function code over to zigler

* create the init entrypoint

* basically puts rendered erlang in there correctly

* correct representation of erlang code

* introspection

* cleans up rendering

* 0.10.0 dev erlang (#347)

* memory leak testing, but no provisions for cleanup

* leak checks on function ingress

* makes it so that recompilation purges modules, ensuring that the new code propagates

* converts over to pushing results to get_result tag

* compilation working, now need to implement cleanup methods

* begins creating parse transform code

* extracts zig compiler instructions out of the parse transform info

* generalizes building skeletons for ast

* basic rebuilded erlang

* put eex into the list of applications

* adds eex into required libs

* adds eex capability

* Path.to_string -> to_string

* instrument sema

* updates refactoring, with inspection

* adds in fetching of zig executable

* make sure logger is started

* investigate sema error

* better command reporting

* better src dir handling

* rename src_dir to code_dir

* look at ast

* fix stray do

* redo some parse transform bits

* ensures jason lib

* updates jason and creates ability to load jason lib

* instrument compiler results

* more instrumentation

* fixes library resolution

* fixes transitive dependency issue

* make sure the parser is fed a binary

* allows customization of ebin_dir

* changes to use proper overlay strategy

* use priv_dir for erlang

* better treatment of priv dir

* proper parse transform ordering

* debug

* makes zig code work correctly now

* typo

* correct sort_by semantics

* ast watching

* do this segment correctly

* add->append

* passes function code over to zigler

* create the init entrypoint

* basically puts rendered erlang in there correctly

* correct representation of erlang code

* introspection

* cleans up rendering

* adds quote_erl facility for easier erlang quoting

* gets erlang rendering to be much less brain-meltingly hard

* nicely realized erlang support and test suite

* adds erlang section to the readme

* 0.10.0 dev erlang (#354)

* bool support on the way to struct support

* begin process of rebuilding zig parser

* begins process of using pegasus-parsed zig

* adds support for understanding basic tests

* first commit

* integration of zig_parser

* clears out all errors

* basic in/out functionality implemented

* first array tests working

* gets basic arrays working

* successful get of mutable array

* array error identification test

* tests error messages on array marshalling

* initial attempt at support for mutable structs

* basic nullable tests

* completes basic slice tests, disables broken datastructure tests

* clean up old tests, impl fastlane for array makes

* completed fastlanes for slices

* adds support for mutable struct

* basic manypointer input completed

* manypointer compile error and sentinel support

* repairs struct datastructure

* completes out manypointer tests

* tests against comptime int and comptime float

* cpointers work for single structs

* support for inputs of various pointers

* completes happy path for cpointer; still need to handle errors

* completes error testing on c pointers

* refactors make to take a make option

* bringing 'get' up to speed with internal error marshalling

* get reform for all basic types

* cleanup for all basic types with name resolution

* slices working

* fixes struct error reporting

* completes get checking routines

* updates to new error format

* adds support for void returns

* easy_c enablement

* enables aliasing

* refactors type serialization

* slice output as binary now supported

* fixes array form errors

* adds tests on error atom and error pair

* memory leak testing, but no provisions for cleanup

* leak checks on function ingress

* makes it so that recompilation purges modules, ensuring that the new code propagates

* converts over to pushing results to get_result tag

* compilation working, now need to implement cleanup methods

* begins creating parse transform code

* extracts zig compiler instructions out of the parse transform info

* generalizes building skeletons for ast

* basic rebuilded erlang

* put eex into the list of applications

* adds eex into required libs

* adds eex capability

* Path.to_string -> to_string

* instrument sema

* updates refactoring, with inspection

* adds in fetching of zig executable

* make sure logger is started

* investigate sema error

* better command reporting

* better src dir handling

* rename src_dir to code_dir

* look at ast

* fix stray do

* redo some parse transform bits

* ensures jason lib

* updates jason and creates ability to load jason lib

* instrument compiler results

* more instrumentation

* fixes library resolution

* fixes transitive dependency issue

* make sure the parser is fed a binary

* allows customization of ebin_dir

* changes to use proper overlay strategy

* use priv_dir for erlang

* better treatment of priv dir

* proper parse transform ordering

* debug

* makes zig code work correctly now

* typo

* correct sort_by semantics

* ast watching

* do this segment correctly

* add->append

* passes function code over to zigler

* create the init entrypoint

* basically puts rendered erlang in there correctly

* correct representation of erlang code

* introspection

* cleans up rendering

* 0.10.0 dev erlang (#346)

* memory leak testing, but no provisions for cleanup

* leak checks on function ingress

* makes it so that recompilation purges modules, ensuring that the new code propagates

* converts over to pushing results to get_result tag

* compilation working, now need to implement cleanup methods

* begins creating parse transform code

* extracts zig compiler instructions out of the parse transform info

* generalizes building skeletons for ast

* basic rebuilded erlang

* put eex into the list of applications

* adds eex into required libs

* adds eex capability

* Path.to_string -> to_string

* instrument sema

* updates refactoring, with inspection

* adds in fetching of zig executable

* make sure logger is started

* investigate sema error

* better command reporting

* better src dir handling

* rename src_dir to code_dir

* look at ast

* fix stray do

* redo some parse transform bits

* ensures jason lib

* updates jason and creates ability to load jason lib

* instrument compiler results

* more instrumentation

* fixes library resolution

* fixes transitive dependency issue

* make sure the parser is fed a binary

* allows customization of ebin_dir

* changes to use proper overlay strategy

* use priv_dir for erlang

* better treatment of priv dir

* proper parse transform ordering

* debug

* makes zig code work correctly now

* typo

* correct sort_by semantics

* ast watching

* do this segment correctly

* add->append

* passes function code over to zigler

* create the init entrypoint

* basically puts rendered erlang in there correctly

* correct representation of erlang code

* introspection

* cleans up rendering

* adds quote_erl facility for easier erlang quoting

* gets erlang rendering to be much less brain-meltingly hard

* nicely realized erlang support and test suite

* adds erlang section to the readme

* cleans up leaks correctly

* housecleaning of old content

* semantic analysis of resources

* sema working for resource, but the resource table isn't constructed yet

* gets resources properly storing as references

* gets working with builtin scalars

* code now supports use of pids a terms

* enables ignoring functions

* Experimental better root (#358)

* enables ignoring functions

* basic conformance to new resource scheme

* gets new resource scheme up and running

* gets resource releasing work

* gets the keep operation working

* gets resource/resource cleanup working as expected

* merge conflict on alias test

* further merge conflict resolution

* mostly working

* this concludes references being a done thing

* code compiles again with raw, but not bug-free.

* enables ... notation

* adds egress typespec testing

* basics of typespecs

* support for packed structs

* adds cpointer support

* basics for typespecs done

* gets basic parameter stuff working

* refactors return typespec testing

* works for functions with return assistance

* gets to the stage where we're compiling

* fixes output_as -> output_type (internally)

* clears up remaining typespec issues

* gets errors working

* gets basic stacktrace swapping working

* gets erlang compilation working

* more consistent file/line resolution

* dirty io and dirty cpu modes, via basic

* refactors synchronous to basic

* (super-failing), refactored to saner options handling

* first major refactoring to correct nif/function organizational mode

* basic compilation pipelines now working

* removes segfaulting cblas code (for now)

* mostly refactored, except for error information

* error returns now working marshalling content

* completes marshalling of big integers

* gets more robust erlang support and successful refactoring

* allocator.zig: implement free for large_beam_allocator (#381)

Remove the NoOp implementation and actually call alignedFree

* Threaded nifs (#393)

* gets basic threading to work

* on the way to completing threaded, need to do proper cmpexchg stuff first

* touchups for talk

* updates to include beam.compare

* adds comment

* marks off the type as unusable

* nerfs zero and one item enums

* maximally correct implementation of the threads api, but still segfaults on join

* gets c_blas working again

* tests easy_c erlang and also begins syntax error

* syntax error resolution

* gets two different levels of manual yielding examples done

* switches over to using payload/call mechanism

* basic framework for running threads successfully compiles

* gets a proper yielding system with threads up and running

* with control flow now compiling correctly

* returns result without segfaulting

* segfault-free manual threading completed

* puts together all of the bits for a functional threaded system

* basic reorganization and correctifying

* threaded now works in erlang

* erroring basics up and running

* gets the basics in place

* gets most parts compiling, but segfaults

* fixes typo

* integration of working threaded model

* touchup on enum error

* Refactor sema (#397)

* touchup on enum error

* adds in some basic updates starting yielding

* zig doc-related changes

* restores other allocators

* gets past initial analysis on basic nif generation

* intermediate attempts at refactoring the compilation cycle

* moves ignores to the correct operation order

* fix: basic erroring

* fixes gpa leak content except with proper deinitialization

* removes unneccessary assembler tests

* fixes manypointer error message

* repairs struct_not_pub errors

* fixes sema unit tests

* fixes error prong wierdness and has sane stacktraces

* restores erlang functionality

* completes testing overriding typespecs

* gets zig doc working, bumps zig parser

* Mac os (#398)

* gets MacOS working, isolates common problems in MacOS:  threading, erroring, and two mystery failures

* resolves issue with allocator threadlocal not being initialized correctly on macOS

* resolves allocators segfault for macOS

* restores beam allocator everywhere, so there's no issues with segfaults

* fixes last stray test errors

---------

Co-authored-by: Isaac Yonemoto <isaacyonemoto@isaacs-mac-mini.lan>

* reverts to putting .so libraries in priv

* makes command respect targetting options when nerves compiles from mac

* Nerves support (#400)

* reverts to putting .so libraries in priv

* makes command respect targetting options when nerves compiles from mac

* fixes CI?

* some credo fixes

* fixes workflows and makes sure CI can download zig

* removes stray dbg call

* removes dependency

* adds direct c compilation options

* baisc zig documentation

* documentation on get/make

* full documentation of beam.zig

* docup plus document send quirk with raw nif

* reorganization of module sidebar

* basics on getting guides working

* starts collections

* builds guides 1 and 2

* begin writing allocators guides

* completes allocators documentation

* first nif options guide

* completes module options

* explanation for deps

* completes guides for c integration

* fixes binary structs

* isolates segfault issue, we should investigate more

* fixes threading segfault

* minor doc change

* fix mix doc problem

* nerves cc affordance

* fixes zig delete macos lib

* fixes collections docs

* changes macos version

* remove macos CI until x86 testing can be done better

* fix segfault, document time limit, increase to 750 us

* update versions

---------

Co-authored-by: Riccardo Binetti <rbino@gmx.com>
Co-authored-by: Isaac Yonemoto <isaacyonemoto@isaacs-mac-mini.lan>
@ityonemo ityonemo deleted the nerves_support branch November 7, 2023 21:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant