kevinlawler / kona

Open-source implementation of the K programming language
ISC License
1.36k stars 138 forks source link

Incompatible serialized data files #618

Open tavmem opened 2 years ago

tavmem commented 2 years ago

Issue #615 addresses the crash for serialized data. This issue documents incompatible aspects of files between k2.8 and kona (on 64-bit Fedora).

My copy of k2.8 for Linux:

[tom@localhost k2.8]$ file k
k: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.0.0, stripped 

My build of kona on Linux:

[tom@localhost kona]$ file k
k: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6b1a4d75c9fbe38289d34ba3277a5b0335df5f54, for GNU/Linux 3.2.0, with debug_info, not stripped

for both k2.8 and kona I am using a file sp25.k extracted from the examples of issue #615, but with only 25 elements (avoiding the crash in kona). Executing these 2 commands in k2.8

  \l sp25.k
  `"pxs25a" 1: puz

results in the file

-rw-rw-r--. 1 tom tom    2216 Jan 10 13:07 pxs25a.l

Running these 2 commands in kona

  \l sp25.k
  `"pxs25b" 1: puz

results in the file

-rwxrwxr-t. 1 tom tom    4032 Jan 10 13:06 pxs25b.K

Note:

in k2.8

  pxd25a: 1: `"pxs25a"
  #pxd25a
25
  pxd25b: 1: `"pxs25b"
pxs25b.l: No such file or directory
pxd25b: 1: `"pxs25b"
        ^
> 

Changing the file extension to pxs25b.l we get

  pxd25b: 1: `"pxs25b"
  \v
pxd25a pxd25b 
  #pxd25b
1
  pxd25b
0

The file created using kona does not load properly into k2.8, we get no error messages, but a variable is created.

in kona

  pxd25b: 1: `"pxs25b"
  \v
,`pxd25b
  #pxd25b
25

  pxd25a: 1: `"pxs25a"
domain error
>  

Changing the file extension to pxs25a.l we get

  pxd25a: 1: `"pxs25a"
nonce error
> 

The file created using k2.8 does not load at all into kona, but we get error messages.

It's not necessarily bad that kona seems to be saving data in a 64-bit format, but in this casae k2.8 and kona are incompatilble.