Project

General

Profile

News

GNU Forth

Added by Igor Pashev 8 days ago

$ gforth --version
gforth 0.7.3

$ gforth ./gcd.fs 11 22 121
11
$ cat gcd.fs
: gcd ( a b -- d )
  2dup > if swap endif
  over mod
  dup 0 <> if recurse else drop endif
  ;

: gcdn ( a1 a2 .. an n -- d )
  dup 1 >
  if
    1 - rot rot
    gcd
    swap
    recurse
  else
    drop
  endif
  ;

\ This is gforth-specific.
\ Usage:
\ # gforth ./gcd.fs 11 22 33 121
\ 11

: main
  0 >r
  begin
  next-arg 2dup 0 0 d<> while
  s>unumber? if drop else abort endif
  r> 1 + >r
  repeat
  2drop
  r> gcdn . cr
  ;

main bye
$ dpkg -s gforth
Package: gforth
Status: install ok installed
Priority: optional
Section: interpreters
Installed-Size: 481
Maintainer: Peter Pentchev <roam@ringlet.net>
Architecture: illumos-amd64
Multi-Arch: foreign
Version: 0.7.3+dfsg-4+dyson1
Depends: libc1 (>= 5.10.18.git.2a44663-1), libffcall1 (>= 1.10+2.41), libffi6 (>= 3.0.13-4+dyson1), libltdl7 (>= 2.4.6), emacsen-common (>= 2.0.7), gforth-common (= 0.7.3+dfsg-4+dyson1), gforth-lib (= 0.7.3+dfsg-4+dyson1)
Conffiles:
 /etc/emacs/site-start.d/50gforth.el 1629d9314f2e496f2c476df52bf64e80
Description: GNU Forth Language Environment

MariaDB 10.1

Added by Igor Pashev 15 days ago

New MariaDB package is available to replace old MySQL 5.5.

This package is notably different from Debian's one:
apart from using SMF, all database configuration happens
in SMF service, not in post/pre/install scripts. This is inspired by the Nixsap project.

There is one missed important feature: unix socket authentication. See #198.

# svcs -p mariadb:default
STATE          STIME    FMRI
online         16:37:23 svc:/application/database/mariadb:default
               16:37:22      863 mysqld

# sudo mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.1.26-MariaDB-1+dyson1 Dyson bok

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

OpenJDK 8

Added by Igor Pashev 25 days ago

$ uname -a; date; java -version; clojure
SunOS dyson 5.11 5.10.18.git.2a44663-0.1 i86pc i386 i86pc Solaris
September 28, 2017 07:13:03 PM MSK
openjdk version "1.8.0_131" 
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-1+dyson0.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
Clojure 1.8.0
user=> (System/getProperty "os.name")
"SunOS" 
user=> (System/getProperty "os.version")
"5.11" 
user=>

New libc version

Added by Igor Pashev 4 months ago

New libc from illumos gate dated 2015-10-18 has been uploaded. Previous version was dated March of 2014.

This new libc package brings in important features:

GCC 6

Added by Igor Pashev 5 months ago

Unlike Debian, Dyson builds and ships GCC's documentation, including manual pages.

# g++-6 -v gcd.cpp -o gcd-cpp
Using built-in specs.
COLLECT_GCC=/usr/bin/g++-6
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-solaris2.11/6/lto-wrapper
Target: x86_64-pc-solaris2.11
Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-17+dyson0' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,c++,java,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=x86_64-pc-solaris2.11- --enable-shared --enable-linker-build-id --enable-tls --enable-threads=posix --enable-libmudflap --with-boot-ldflags=-static-libstdc++ --with-gnu-as --with-gnu-ld --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libsanitizer --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-illumos-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-illumos-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-illumos-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc=auto --enable-multiarch --with-arch-32=i686 --enable-multilib --enable-checking=release --build=x86_64-pc-solaris2.11 --host=x86_64-pc-solaris2.11 --target=x86_64-pc-solaris2.11
Thread model: posix
gcc version 6.3.0 20170510 (Debian 6.3.0-17+dyson0) 
COLLECT_GCC_OPTIONS='-v' '-o' 'gcd-cpp' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-pc-solaris2.11/6/cc1plus -quiet -v -imultiarch x86_64-illumos gcd.cpp -quiet -dumpbase gcd.cpp -mtune=generic -march=x86-64 -auxbase gcd -version -Wformat -Wformat-security -o /var/tmp//ccogaOhy.s
GNU C++14 (Debian 6.3.0-17+dyson0) version 6.3.0 20170510 (x86_64-pc-solaris2.11)
    compiled by GNU C version 6.3.0 20170510, GMP version 6.0.0, MPFR version 3.1.0-p10, MPC version 1.0.1, isl version 0.14 or 0.13
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory "/usr/include/x86_64-illumos/c++/6" 
ignoring nonexistent directory "/usr/local/include/x86_64-illumos" 
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-solaris2.11/6/../../../../x86_64-pc-solaris2.11/include" 
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/6
 /usr/include/x86_64-illumos/c++/6
 /usr/include/c++/6/backward
 /usr/lib/gcc/x86_64-pc-solaris2.11/6/include
 /usr/local/include
 /usr/lib/gcc/x86_64-pc-solaris2.11/6/include-fixed
 /usr/include/x86_64-illumos
 /usr/include
End of search list.
GNU C++14 (Debian 6.3.0-17+dyson0) version 6.3.0 20170510 (x86_64-pc-solaris2.11)
    compiled by GNU C version 6.3.0 20170510, GMP version 6.0.0, MPFR version 3.1.0-p10, MPC version 1.0.1, isl version 0.14 or 0.13
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: cd078e7202cf4b7893e13e78ed51a784
COLLECT_GCC_OPTIONS='-v' '-o' 'gcd-cpp' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/bin/as -v -V -Qy -s --64 -o /var/tmp//ccpgaOhy.o /var/tmp//ccogaOhy.s
GNU assembler version 2.28 (x86_64-pc-solaris2.11) using BFD version (GNU Binutils for Debian) 2.28
COMPILER_PATH=/usr/lib/gcc/x86_64-pc-solaris2.11/6/:/usr/lib/gcc/x86_64-pc-solaris2.11/6/:/usr/lib/gcc/x86_64-pc-solaris2.11/:/usr/lib/gcc/x86_64-pc-solaris2.11/6/:/usr/lib/gcc/x86_64-pc-solaris2.11/:/usr/bin/
LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-solaris2.11/6/:/usr/lib/gcc/x86_64-pc-solaris2.11/6/../../../x86_64-illumos/:/usr/lib/gcc/x86_64-pc-solaris2.11/6/../../../../lib/:/lib/x86_64-illumos/:/lib/../lib/:/usr/lib/x86_64-illumos/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-solaris2.11/6/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'gcd-cpp' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-pc-solaris2.11/6/collect2 -plugin /usr/lib/gcc/x86_64-pc-solaris2.11/6/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-solaris2.11/6/lto-wrapper -plugin-opt=-fresolution=/var/tmp//ccqgaOhy.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=/ --build-id --eh-frame-hdr -V -m elf_x86_64_sol2 -Qy -o gcd-cpp /usr/lib/gcc/x86_64-pc-solaris2.11/6/../../../x86_64-illumos/crt1.o /usr/lib/gcc/x86_64-pc-solaris2.11/6/../../../x86_64-illumos/crti.o /usr/lib/gcc/x86_64-pc-solaris2.11/6/../../../x86_64-illumos/values-Xa.o /usr/lib/gcc/x86_64-pc-solaris2.11/6/crtbegin.o -L/usr/lib/gcc/x86_64-pc-solaris2.11/6 -L/usr/lib/gcc/x86_64-pc-solaris2.11/6/../../../x86_64-illumos -L/usr/lib/gcc/x86_64-pc-solaris2.11/6/../../../../lib -L/lib/x86_64-illumos -L/lib/../lib -L/usr/lib/x86_64-illumos -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-solaris2.11/6/../../.. /var/tmp//ccpgaOhy.o -lstdc++ -lm -lrt -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-solaris2.11/6/crtend.o /usr/lib/gcc/x86_64-pc-solaris2.11/6/../../../x86_64-illumos/crtn.o
GNU ld (GNU Binutils for Debian) 2.28
  Supported emulations:
   elf_x86_64_sol2
   elf_x86_64
   elf_i386_sol2
   elf_i386_ldso
   elf_i386
   elf_iamcu
   elf_l1om
   elf_k1om
COLLECT_GCC_OPTIONS='-v' '-o' 'gcd-cpp' '-shared-libgcc' '-mtune=generic' '-march=x86-64'

LLVM & Clang 3.8

Added by Igor Pashev 5 months ago

(00:55:16)
[pashev@dyson:~/GCD]
# clang++-3.8 --version
clang version 3.8.1-16+dyson3 (tags/RELEASE_381/final)
Target: x86_64-pc-solaris2.11
Thread model: posix
InstalledDir: /usr/bin

(00:55:27)
[pashev@dyson:~/GCD]
# clang++-3.8 gcd.cpp -o gcd-cpp -Wall -v
clang version 3.8.1-16+dyson3 (tags/RELEASE_381/final)
Target: x86_64-pc-solaris2.11
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.7.3
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.8.3
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.9.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.7
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.7.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.8
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.8.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.9.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/5.2.1
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
 "/usr/lib/llvm-3.8/bin/clang" -cc1 -triple x86_64-pc-solaris2.11 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name gcd.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -v -dwarf-column-info -debugger-tuning=gdb -resource-dir /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1 -internal-isystem /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/c++/5.2.1 -internal-isystem /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/x86_64-illumos/c++/5.2.1 -internal-isystem /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/x86_64-illumos/c++/5.2.1 -internal-isystem /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/c++/5.2.1/backward -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wall -fdeprecated-macro -fdebug-compilation-dir /home/pashev/GCD -ferror-limit 19 -fmessage-length 237 -fno-use-cxa-atexit -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /var/tmp/gcd-c25289.o -x c++ gcd.cpp
clang -cc1 version 3.8.1 based upon LLVM 3.8.1 default target x86_64-pc-solaris2.11
ignoring nonexistent directory "/include" 
ignoring duplicate directory "/usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/x86_64-illumos/c++/5.2.1" 
ignoring duplicate directory "/usr/local/include" 
ignoring duplicate directory "/usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include" 
ignoring duplicate directory "/usr/include" 
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/c++/5.2.1
 /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/x86_64-illumos/c++/5.2.1
 /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/c++/5.2.1/backward
 /usr/local/include
 /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include
 /usr/include
End of search list.
 "/usr/bin/x86_64-pc-solaris2.11-ld" --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64_sol2 -o gcd-cpp /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../x86_64-illumos/crt1.o /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../x86_64-illumos/crti.o /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../x86_64-illumos/values-Xa.o /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/crtbegin.o -L/usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1 -L/usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../x86_64-illumos -L/lib/x86_64-illumos -L/usr/lib/x86_64-illumos -L/usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../.. -L/usr/lib/llvm-3.8/bin/../lib -L/lib -L/usr/lib -lstdc++ -lgcc_s -lc -lgcc -lm /var/tmp/gcd-c25289.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/crtend.o /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../x86_64-illumos/crtn.o

(00:55:37)
[pashev@dyson:~/GCD]
# clang++-3.8 -m32 gcd.cpp -o gcd-cpp -Wall -v
clang version 3.8.1-16+dyson3 (tags/RELEASE_381/final)
Target: i386-pc-solaris2.11
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.7.3
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.8.3
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/4.9.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.7
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.7.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.8
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.8.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/4.9.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-solaris2.11/5.2.1
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: 32;@m32
 "/usr/lib/llvm-3.8/bin/clang" -cc1 -triple i386-pc-solaris2.11 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name gcd.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -target-cpu pentium4 -v -dwarf-column-info -debugger-tuning=gdb -resource-dir /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1 -internal-isystem /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/c++/5.2.1 -internal-isystem /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/x86_64-illumos/c++/5.2.1/32 -internal-isystem /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/i386-pc-solaris2.11/c++/5.2.1 -internal-isystem /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/c++/5.2.1/backward -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wall -fdeprecated-macro -fdebug-compilation-dir /home/pashev/GCD -ferror-limit 19 -fmessage-length 237 -fno-use-cxa-atexit -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /var/tmp/gcd-b098d9.o -x c++ gcd.cpp
clang -cc1 version 3.8.1 based upon LLVM 3.8.1 default target x86_64-pc-solaris2.11
ignoring nonexistent directory "/usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/i386-pc-solaris2.11/c++/5.2.1" 
ignoring nonexistent directory "/include" 
ignoring duplicate directory "/usr/local/include" 
ignoring duplicate directory "/usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include" 
ignoring duplicate directory "/usr/include" 
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/c++/5.2.1
 /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/x86_64-illumos/c++/5.2.1/32
 /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../include/c++/5.2.1/backward
 /usr/local/include
 /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include
 /usr/include
End of search list.
 "/usr/bin/x86_64-pc-solaris2.11-ld" --hash-style=both --build-id --eh-frame-hdr -m elf_i386_sol2 -o gcd-cpp /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../lib32/crt1.o /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../lib32/crti.o /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../lib32/values-Xa.o /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/32/crtbegin.o -L/usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/32 -L/usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../lib32 -L/lib/../lib32 -L/usr/lib/../lib32 -L/usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1 -L/usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../.. -L/usr/lib/llvm-3.8/bin/../lib -L/lib -L/usr/lib -lstdc++ -lgcc_s -lc -lgcc -lm /var/tmp/gcd-b098d9.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/32/crtend.o /usr/bin/../lib/gcc/x86_64-pc-solaris2.11/5.2.1/../../../../lib32/crtn.o

(00:55:54)
[pashev@dyson:~/GCD]
# ./gcd-cpp 11 121 44
11

(1-10/102)

Also available in: Atom