Code Monkey home page Code Monkey logo

xs's People

Contributors

aperezdc avatar aredridel avatar fkoehler2 avatar frkoehle avatar tiedyeddevil 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xs's Issues

test failures on ppc64/ppc64le and armv7

The current HEAD fails to pass the test suite on ppc64/ppc64le and armv7 architectures, same failures on all 3 arches.

[3/4] '/usr/bin/python3' '/usr/bin/meson' '--internal' 'commandrunner' '/builddir/build/BUILD/XS-fc45d1fa6995705c8ac6d78cf102a6aac682828f' '/builddir/build/BUILD/XS-fc45d1fa6995705c8ac6d78cf102a6aac682828f/build' '' '/usr/bin/mesonintrospect' 'sh' '-c' './tests/xs_tests.xs'
Python detected LC_CTYPE=C: LC_CTYPE & LANG coerced to C.UTF-8 (set another locale or PYTHONCOERCECLOCALE=0 to disable this locale coercion behavior).
/builddir/build/BUILD/XS-fc45d1fa6995705c8ac6d78cf102a6aac682828f/./tests
Passed: Simple alias operates
Passed: Self-referring alias does not recurse
Passed: Temporary alias disappears
Passed: Alias print
Passed: Simple addition
Passed: Simple multiplication
Passed: Simple division
Passed: Simple modulus
Passed: Simple subtraction
Passed: Order of operations
Passed: Floating point operation
Passed: Let without assign
Passed: Character hex escapes
Passed: Character octal escapes
Passed: Character Unicode escapes
Passed: Character invalid escapes
Passed: Simple until test
Passed: Escape escapes
Passed: Escape val
Passed: Throw from escape
Passed: echo
Passed: Eval echo
Passed: map produces expected values
Passed: omap produces expected list
Passed: solitary * matches all non-. files
Passed: * glob matches expected files
Passed: ? glob matches expected files
Passed: / glob matches expected files
Passed: Command args match
Passed: Failure on empty command
Passed: Long word
Passed: Backslash-newline to space conversion
Passed: Backslash after variable terminates name
Passed: Backslash-newline after variable name space conversion
Passed: Backslash in middle of word
Passed: Free-standing backslash
Passed: EOF in comment
Passed: Colon handled properly
Passed: Equals in middle of word is literal
Passed: Equals at end of word is literal
Passed: Equals at beginning of word is literal
Passed: Free-standing equals incorectly placed fails
Passed: For across infix list
Passed: printf %s
Passed: printf %s w/ width
Passed: printf %s w/ left
Passed: printf %s w/ precision
Passed: printf %c
Passed: printf %c w/ non-char arg
Passed: printf %d
Passed: printf %d w/ non-integral numeric arg
Passed: printf %d w/ non-numeric arg
Passed: printf %i
Passed: printf %i w/ non-integral numeric arg
Passed: printf %i w/ non-numeric arg
Passed: printf %o
Passed: printf %o w/ non-integral numeric arg
Passed: printf %o w/ non-numeric arg
Passed: printf %u
Passed: printf %u w/ non-integral numeric arg
Passed: printf %u w/ non-numeric arg
Passed: printf %x
Passed: printf %x w/ non-integral numeric arg
Passed: printf %x w/ non-numeric arg
Passed: printf %X
Passed: printf %X w/ non-integral numeric arg
Passed: printf %X w/ non-numeric arg
{match 3.140000 -2.718000} failed
Failed: printf %f
{match 73.000000 -32.000000} failed
Failed: printf %f w/ integral numeric arg
Passed: printf %f w/ non-numeric arg
{match 3.140000e+00 -2.718000e+00} failed
Failed: printf %e
{match 7.300000e+01 -3.200000e+01} failed
Failed: printf %e w/ integral numeric arg
Passed: printf %e w/ non-numeric arg
{match 3.140000E+00 -2.718000E+00} failed
Failed: printf %E
{match 7.300000E+01 -3.200000E+01} failed
Failed: printf %E w/ integral numeric arg
Passed: printf %E w/ non-numeric arg
{match 3.14 -2.718 0.0001 1e-05} failed
Failed: printf %g
{match 73 -32 100000 1e+06} failed
Failed: printf %g w/ integral numeric arg
Passed: printf %g w/ non-numeric arg
{match 3.14 -2.718 0.0001 1E-05} failed
Failed: printf %G
{match 73 -32 100000 1E+06} failed
Failed: printf %G w/ integral numeric arg
Passed: printf %g w/ non-numeric arg
Passed: printf %a w/ non-numeric arg
Passed: printf %a w/ non-numeric arg
Passed: Pushd absolute
Passed: Pushd relative
Passed: Pushd (no args)
Passed: Bad command output redirection
Passed: Bad command input redirection
Passed: Integer :lt comparison
Passed: Integer :le comparison
Passed: Integer :gt comparison
Passed: Integer :ge comparison
Passed: Integer :eq comparison
Passed: Integer :ne comparison
Passed: Float :lt comparison
Passed: Float :le comparison
Passed: Float :gt comparison
Passed: Float :ge comparison
Passed: Float :eq comparison
Passed: Float :ne comparison
Passed: Float :lt comparison
Passed: Integer/Float :le comparison
Passed: Integer/Float :gt comparison
Passed: Integer/Float :ge comparison
Passed: Integer/Float :eq comparison
Passed: Integer/Float :ne comparison
Passed: Float/Integer :lt comparison
Passed: Float/Integer :le comparison
Passed: Float/Integer :gt comparison
Passed: Float/Integer :ge comparison
Passed: Float/Integer :eq comparison
Passed: Float/Integer :ne comparison
Passed: String :lt comparison
Passed: String :le comparison
Passed: String :gt comparison
Passed: String :ge comparison
Passed: String :eq comparison
Passed: String :ne comparison
Passed: fsplit
Passed: split
Passed: Subscript one valid index
Passed: Subscript one zero index
Passed: Subscript one negative index
Passed: Subscript index past end
Passed: Subscript one definite range
Passed: Subscript one open beginning range
Passed: Subscript one open ending range
Passed: Subscript one reversed definite range
Passed: Subscript mixed
Passed: Subscript one range bad start
Passed: Subscript one range bad end
Passed: Subscript missing index
Passed: switch_normal
Passed: switch_default
Passed: XS let precise error
Passed: Syntax error on bad let
------- No ppc64le platform tests
Expected passes: 127
Unexpected failures: 10
FAILED: check

For full details please build.log files at https://koji.fedoraproject.org/koji/taskinfo?taskID=19712683

build fails on Arch Linux: undefined reference to `GC_throw_bad_alloc()'

Build from master on Arch:

...
[67/79] Linking target xsdump.
FAILED: xsdump 
g++  -o xsdump 'xsdump@exe/meson-generated_.._parse.cxx.o' 'xsdump@exe/meson-generated_.._sigmsgs.cxx.o' 'xsdump@exe/src_dump.cxx.o' 'xsdump@exe/src_access.cxx.o' 'xsdump@exe/src_closure.cxx.o' 'xsdump@exe/src_conv.cxx.o' 'xsdump@exe/src_eval.cxx.o' 'xsdump@exe/src_fd.cxx.o' 'xsdump@exe/src_glob.cxx.o' 'xsdump@exe/src_glom.cxx.o' 'xsdump@exe/src_heredoc.cxx.o' 'xsdump@exe/src_input.cxx.o' 'xsdump@exe/src_list.cxx.o' 'xsdump@exe/src_main.cxx.o' 'xsdump@exe/src_match.cxx.o' 'xsdump@exe/src_opt.cxx.o' 'xsdump@exe/src_prim-ctl.cxx.o' 'xsdump@exe/src_prim.cxx.o' 'xsdump@exe/src_prim-etc.cxx.o' 'xsdump@exe/src_prim-io.cxx.o' 'xsdump@exe/src_prim-rel.cxx.o' 'xsdump@exe/src_prim-sys.cxx.o' 'xsdump@exe/src_print.cxx.o' 'xsdump@exe/src_proc.cxx.o' 'xsdump@exe/src_signal.cxx.o' 'xsdump@exe/src_split.cxx.o' 'xsdump@exe/src_status.cxx.o' 'xsdump@exe/src_str.cxx.o' 'xsdump@exe/src_syntax.cxx.o' 'xsdump@exe/src_term.cxx.o' 'xsdump@exe/src_token.cxx.o' 'xsdump@exe/src_tree.cxx.o' 'xsdump@exe/src_util.cxx.o' 'xsdump@exe/src_var.cxx.o' 'xsdump@exe/src_version.cxx.o' -flto -Wl,--no-undefined -Wl,--as-needed -Wl,--start-group -lreadline -lgc /usr/lib/../lib/libffi.so -Wl,--end-group '-Wl,-rpath,$ORIGIN/../../../../../../usr/lib' -Wl,-rpath-link,/usr/lib/../lib  
/usr/bin/ld: /tmp/ccDKFGbJ.ltrans0.ltrans.o: in function `operator new(unsigned long, GCPlacement, void (*)(void*, void*), void*)':
<artificial>:(.text+0x89d5): undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: /tmp/ccDKFGbJ.ltrans0.ltrans.o: in function `gc::operator new(unsigned long, GCPlacement)':
<artificial>:(.text+0x18fca): undefined reference to `GC_throw_bad_alloc()'

Quick foray to /usr/lib shows there is a libgccpp.so as well as libgc.so:

/usr/lib/libgc.so
/usr/lib/libgc.so.1
/usr/lib/libgc.so.1.3.4
...
/usr/lib/libgccpp.so
/usr/lib/libgccpp.so.1
/usr/lib/libgccpp.so.1.3.2

Fixed by adding libgccpp to dependencies (patch below). Not sure how to make this play nice with other systems, but I hope this helps.

Thanks for your work on XS.

patch (github won't let me attach):

diff --git a/meson.build b/meson.build
index 4a8985d..a956436 100644
--- a/meson.build
+++ b/meson.build
@@ -7,7 +7,8 @@ project('xs', ['cpp'])
   if not ffi_lib.found()
     ffi_lib = compiler.find_library('ffi')
   endif
-  gc_lib = compiler.find_library('gc')
+  gc_lib = compiler.find_library('gc') #
+  gccpp_lib = compiler.find_library('gccpp') #
   readline_lib = compiler.find_library('readline')
   custom_target('.stamp',
        build_always_stale: true,
@@ -47,7 +48,7 @@ project('xs', ['cpp'])
                'src/syntax.cxx', 'src/term.cxx', 'src/token.cxx',
                'src/tree.cxx', 'src/util.cxx', 'src/var.cxx',
                'src/version.cxx']
-  common_dependencies = [boost_dep, readline_lib, gc_lib, ffi_lib]
+  common_dependencies = [boost_dep, readline_lib, gc_lib, gccpp_lib, ffi_lib]
   xsdump = executable('xsdump', ['src/dump.cxx', common_sources],
        cpp_args: compile_flags,
        dependencies: common_dependencies)

auto completion does not handle filenames with spaces, ', and ~ in it well

I tried deleting a file named Simple mixer control 'FRDDR_A SINK 1 SEL',0, and entered rm Sim<tab><return> to do it, but it autocompleted into 'Simple mixer control 'FRDDR_A SINK 1 SEL',0' instead deleted Simple mixer control FDDR_A, SINK, 1, SEL,0, which was obviously not intended. I assume this is a bug in XS?

cannot build with gc-8.0

I having trouble building xs for Fedora 32 which is still in development (downstream bug report).

$ rpm -q gcc-c++ boost gc
gcc-c++-10.0.1-0.8.fc32.x86_64
boost-1.69.0-14.fc32.x86_64
gc-8.0.4-3.fc32.x86_64

I haven't updated the Fedora package in quite a while.
The above bug report is based on a snapshot from commit 22afec1 and fails in Fedora 32 (gc-8.0) like this:

[43/78] c++  -o xsdump 'xsdump@exe/meson-generated_.._parse.cxx.o' 'xsdump@exe/meson-generated_.._sigmsgs.cxx.o' 'xsdump@exe/dump.cxx.o' 'xsdump@exe/access.cxx.o' 'xsdump@exe/closure.cxx.o' 'xsdump@exe/conv.cxx.o' 'xsdump@exe/eval.cxx.o' 'xsdump@exe/fd.cxx.o' 'xsdump@exe/glob.cxx.o' 'xsdump@exe/glom.cxx.o' 'xsdump@exe/heredoc.cxx.o' 'xsdump@exe/input.cxx.o' 'xsdump@exe/list.cxx.o' 'xsdump@exe/main.cxx.o' 'xsdump@exe/match.cxx.o' 'xsdump@exe/opt.cxx.o' 'xsdump@exe/prim-ctl.cxx.o' 'xsdump@exe/prim.cxx.o' 'xsdump@exe/prim-etc.cxx.o' 'xsdump@exe/prim-io.cxx.o' 'xsdump@exe/prim-rel.cxx.o' 'xsdump@exe/prim-sys.cxx.o' 'xsdump@exe/print.cxx.o' 'xsdump@exe/proc.cxx.o' 'xsdump@exe/signal.cxx.o' 'xsdump@exe/split.cxx.o' 'xsdump@exe/status.cxx.o' 'xsdump@exe/str.cxx.o' 'xsdump@exe/syntax.cxx.o' 'xsdump@exe/term.cxx.o' 'xsdump@exe/token.cxx.o' 'xsdump@exe/tree.cxx.o' 'xsdump@exe/util.cxx.o' 'xsdump@exe/var.cxx.o' 'xsdump@exe/version.cxx.o' -Wl,--as-needed -Wl,--no-undefined -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=zEC12 -mtune=z13 -fasynchronous-unwind-tables -fstack-clash-protection -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,--start-group -lreadline -lgc -lffi -Wl,--end-group
FAILED: xsdump 
c++  -o xsdump 'xsdump@exe/meson-generated_.._parse.cxx.o' 'xsdump@exe/meson-generated_.._sigmsgs.cxx.o' 'xsdump@exe/dump.cxx.o' 'xsdump@exe/access.cxx.o' 'xsdump@exe/closure.cxx.o' 'xsdump@exe/conv.cxx.o' 'xsdump@exe/eval.cxx.o' 'xsdump@exe/fd.cxx.o' 'xsdump@exe/glob.cxx.o' 'xsdump@exe/glom.cxx.o' 'xsdump@exe/heredoc.cxx.o' 'xsdump@exe/input.cxx.o' 'xsdump@exe/list.cxx.o' 'xsdump@exe/main.cxx.o' 'xsdump@exe/match.cxx.o' 'xsdump@exe/opt.cxx.o' 'xsdump@exe/prim-ctl.cxx.o' 'xsdump@exe/prim.cxx.o' 'xsdump@exe/prim-etc.cxx.o' 'xsdump@exe/prim-io.cxx.o' 'xsdump@exe/prim-rel.cxx.o' 'xsdump@exe/prim-sys.cxx.o' 'xsdump@exe/print.cxx.o' 'xsdump@exe/proc.cxx.o' 'xsdump@exe/signal.cxx.o' 'xsdump@exe/split.cxx.o' 'xsdump@exe/status.cxx.o' 'xsdump@exe/str.cxx.o' 'xsdump@exe/syntax.cxx.o' 'xsdump@exe/term.cxx.o' 'xsdump@exe/token.cxx.o' 'xsdump@exe/tree.cxx.o' 'xsdump@exe/util.cxx.o' 'xsdump@exe/var.cxx.o' 'xsdump@exe/version.cxx.o' -Wl,--as-needed -Wl,--no-undefined -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=zEC12 -mtune=z13 -fasynchronous-unwind-tables -fstack-clash-protection -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,--start-group -lreadline -lgc -lffi -Wl,--end-group
/usr/bin/ld: xsdump@exe/closure.cxx.o: in function `operator new(unsigned long, GCPlacement, void (*)(void*, void*), void*)':
/usr/include/gc/gc_cpp.h:545: undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: /usr/include/gc/gc_cpp.h:545: undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: /usr/include/gc/gc_cpp.h:545: undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: /usr/include/gc/gc_cpp.h:545: undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: xsdump@exe/list.cxx.o: in function `operator new(unsigned long, GCPlacement, void (*)(void*, void*), void*)':
/usr/include/gc/gc_cpp.h:545: undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: xsdump@exe/list.cxx.o:/usr/include/gc/gc_cpp.h:545: more undefined references to `GC_throw_bad_alloc()' follow
collect2: error: ld returned 1 exit status

(It builds fine on Fedora 31 (gc-7.6).)

The same thing basically happens with current upstream git HEAD, it also builds fine on Fedora 31, but again in Fedora 32:

FAILED: xsdump 
c++  -o xsdump 'xsdump@exe/meson-generated_.._parse.cxx.o' 'xsdump@exe/meson-generated_.._sigmsgs.cxx.o' 'xsdump@exe/src_dump.cxx.o' 'xsdump@exe/src_access.cxx.o' 'xsdump@exe/src_closure.cxx.o' 'xsdump@exe/src_conv.cxx.o' 'xsdump@exe/src_eval.cxx.o' 'xsdump@exe/src_fd.cxx.o' 'xsdump@exe/src_glob.cxx.o' 'xsdump@exe/src_glom.cxx.o' 'xsdump@exe/src_heredoc.cxx.o' 'xsdump@exe/src_input.cxx.o' 'xsdump@exe/src_list.cxx.o' 'xsdump@exe/src_main.cxx.o' 'xsdump@exe/src_match.cxx.o' 'xsdump@exe/src_opt.cxx.o' 'xsdump@exe/src_prim-ctl.cxx.o' 'xsdump@exe/src_prim.cxx.o' 'xsdump@exe/src_prim-etc.cxx.o' 'xsdump@exe/src_prim-io.cxx.o' 'xsdump@exe/src_prim-rel.cxx.o' 'xsdump@exe/src_prim-sys.cxx.o' 'xsdump@exe/src_print.cxx.o' 'xsdump@exe/src_proc.cxx.o' 'xsdump@exe/src_signal.cxx.o' 'xsdump@exe/src_split.cxx.o' 'xsdump@exe/src_status.cxx.o' 'xsdump@exe/src_str.cxx.o' 'xsdump@exe/src_syntax.cxx.o' 'xsdump@exe/src_term.cxx.o' 'xsdump@exe/src_token.cxx.o' 'xsdump@exe/src_tree.cxx.o' 'xsdump@exe/src_util.cxx.o' 'xsdump@exe/src_var.cxx.o' 'xsdump@exe/src_version.cxx.o' -Wl,--as-needed -Wl,--no-undefined -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,--start-group /usr/lib64/libreadline.so -lgc -lffi -Wl,--end-group
/usr/bin/ld: xsdump@exe/src_closure.cxx.o: in function `operator new(unsigned long, GCPlacement, void (*)(void*, void*), void*)':
/usr/include/gc/gc_cpp.h:545: undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: /usr/include/gc/gc_cpp.h:545: undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: /usr/include/gc/gc_cpp.h:545: undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: xsdump@exe/src_list.cxx.o: in function `operator new(unsigned long, GCPlacement, void (*)(void*, void*), void*)':
/usr/include/gc/gc_cpp.h:545: undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: /usr/include/gc/gc_cpp.h:545: undefined reference to `GC_throw_bad_alloc()'
/usr/bin/ld: xsdump@exe/src_list.cxx.o:/usr/include/gc/gc_cpp.h:545: more undefined references to `GC_throw_bad_alloc()' follow
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

I confirmed that downgrading gc to 7.6 in the Fedora 32 build fixes the build, though there are 3 test failures:

/xs/XS-22afec159ebc9124cbaa31601e823ab454c33b6e/./tests
{match 'TEST: hello world'} failed
Failed:  Simple alias operates
{match 'TEST2: bye-bye world'} failed
Failed:  Self-referring alias does not recurse
{match 'ALIASED: TESTNOALIAS'} failed
Failed:  Temporary alias disappears

yacc error: "XS/parse.yxx", syntax error %error-verbose

I tried to build XS head on Fedora 15 and got to:

/bin/sh ./ylwrap parse.yxx y.tab.c parse.cxx y.tab.h parse.h y.output parse.output -- yacc -d
yacc: e - line 19 of "XS/parse.yxx", syntax error
%error-verbose
^
make: *** [parse.cxx] Error 1

signal.cxx:289: bad loop

signal.cxx:289:3: warning: loop exit may only be reached after undefined behavior [-Waggressive-loop-optimizations]

for (sig = 0;; sig++) {
    if (caught[sig] != 0) {
        --sigcount;
        caught[sig] = 0;
        break;
    }
    if (sig >= NSIG) {
        sigcount = 0;
        return;
    }
}

Suggest check sig < nSIG before indexing into array.

I might want to help.

I've been frustrated with shells and shell scripting for years; my day job is webdev (first Ruby/Rails, now Elixir/Phoenix). Been keeping a lookout for a good functional shell because once you change your mental model to functional, you don't want to shift back to procedural (as you probably know!). I knew of es (got it to build, actually, just the other day on my new M1 Max), I was amazed by the way it blended existing shell semantics we're all familiar with, with sensible functional improvements.

So I'm not a C/C++ coder, but I did take a couple classes in it at Cornell back in the day, and I've messed with C code on and off over the years, played with Rust, etc...; I recently had to get a VIPS NIF to compile and build both locally and in production after deployment, which was a bit tricky (NIFs are "natively implemented functions" you can call from Elixir/erlang/BEAM code)... I probably know just enough to be dangerous, so I suppose that is a negative for me (but also a potential learning opportunity). I understand the rudimentaries of garbage collection (CS212 was taught in Scheme when I attended)

I haven't actually yet gotten XS to build locally, I have the Boehm gc lib installed etc... I think I am simply ignorant of some of the changes/requirements the C++ compiler has had over the years, I've had to google a lot of the errors so far...

But here's the thing: I believe a functional-oriented shell is extremely interesting to anyone whose day job is working with a functional language, and that this is therefore potentially very useful, and I'm happy to review and accept PR's after ensuring tests pass, write additional test cases, etc... and I'm volunteering my attention/shepherding on this. Would be QUITE happy if you wouldn't mind some time working together to transition this over (starting with helping me get it to build locally on my machine! Kind of a necessity, that. LOL)

Let me know if you want to have a chat.

Request: Vi Keybindings

Hell, I might do this myself come summer break. I'm used to vi keybindings, so a vi mode would be great.

2 tests failed on armv7

+ make testxs
./test.xs
/builddir/build/BUILD/frytvm-XS-c9a0b29
Passed:  Simple alias operates
Passed:  Self-referring alias does not recurse
Passed:  Temporary alias disappears
Passed:  Alias print
Passed:  Simple addition
Passed:  Simple multiplication
unknown signal 139--core dumped
{match '2'} failed
Failed:  Simple division
Passed:  Simple subtraction
unknown signal 139--core dumped
{match '11'} failed
Failed:  Order of operations
Passed:  Floating point operation
Passed:  Let without assign
Passed:  Simple until test
Passed:  Escape escapes
Passed:  Escape val
Passed:  echo
Passed:  Eval echo
Passed:  map produces expected values
Passed:  omap produces expected list
Passed:  solitary * matches all non-. files
Passed:  * glob matches expected files
Passed:  ? glob matches expected files
Passed:  */* glob matches expected files
Passed:  Command args match
Passed:  Failure on empty command
Passed:  Long word
Passed:  Backslash-newline to space conversion
Passed:  Backslash after variable terminates name
Passed:  Backslash-newline after variable name space conversion
Passed:  Backslash in middle of word
Passed:  Free-standing backslash
Passed:  EOF in comment
Passed:  Colon handled properly
Passed:  Equals in middle of word is literal
Passed:  Equals at end of word is literal
Passed:  Equals at beginning of word is literal
Passed:  Free-standing equals incorectly placed fails
Passed:  For across infix list
Passed:  Pushd absolute
Passed:  Pushd relative
Passed:  Pushd (no args)
Passed:  Bad command output redirection
Passed:  Bad command input redirection
Passed:  fsplit
Passed:  split
Passed:  switch_normal
Passed:  switch_default
Passed:  XS let precise error
Passed:  Syntax error on bad let
Expected passes:      46
Unexpected failures:  2
Makefile:968: recipe for target 'testxs' failed
make: *** [testxs] Error 2

Building XS

I'm interested in XS. I read the INSTALL file, which states that I simply need to run:

./configure
make

But that's not the case. A configure file has not been generated in the current tree, so the initial ./configure does not work. I applied what I know of autotools to try and build it anyway, but I'm too retarded to get it to work. I got to a point where the Makefile was generated, but make required a ‘parse.h’, which is not present. There's parse.yxx, though. There's another issue here (#2) in which it was suggested to run bison on parse.yxx. I am not at all familiar with bison and I believe I am doing something incorrectly, as bison parse.yxx generates a parse.tab.cxx file instead of the parse.hxx as stated in the other issue. I'm kind of lost here.

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.