From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com [IPv6:2a00:1450:4864:20::131]) by sourceware.org (Postfix) with ESMTPS id 4E4273857C55 for ; Sun, 22 Nov 2020 00:23:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 4E4273857C55 Received: by mail-lf1-x131.google.com with SMTP id s30so18803035lfc.4 for ; Sat, 21 Nov 2020 16:23:58 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ebOZlBChLZC1UdfeE4qU7g4TChJ/hUqN0SzBZ3uyWV0=; b=GAZN/neFzMdZn25KySLP0fiqeSFLWdhrdzWL44ncGtE4rLjoyDLHRrNJkpUteBhw3G w/acE+kXXtxE9ei3RxBeOn/tlLmBCkHTayMMlRbhg/Ruod4I4oyWZvRxk8v4Zsp4xwjG 56I0fUlaeukj+kgC3B4H5kj9z2Fqnj9W0DJli4HKPRwFVo6CR+UuX/mEOHkClJZvw/GZ L4rcIxC+Vvnel/LFjvCZmxcgJ6tSh45JiVaeeD5NE2/UAf1qBuiGplBi8W7nyCGtknla DfEQSJDgCvte7cqtYcMgzi62oVAwHqU24ZeEGSAeTGVKaLfbr4GkKownC9eNQQZnEBas X9Kg== X-Gm-Message-State: AOAM533RqRgeiRvAWHkEjPrBbhOiH6R9Yjr88FSWrylcKgVj1g9x2xaQ 009kG6JDtn3btnGNDusoOXhAtaXOjVhQ/xzNeVvmv5Y74Zo= X-Google-Smtp-Source: ABdhPJx1XfQytvjkTY3J2OmjxRf9sRbys2+FtugmhuPP0cThXf9qypyeeAaAXxPkOU0JIXMaz+g2BrInHC69FeGyhcY= X-Received: by 2002:a19:4a87:: with SMTP id x129mr12220455lfa.104.1606004636695; Sat, 21 Nov 2020 16:23:56 -0800 (PST) MIME-Version: 1.0 From: Arvydas Silanskas Date: Sun, 22 Nov 2020 02:23:45 +0200 Message-ID: Subject: Kawa source tree organization To: kawa mailing list X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: kawa@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Kawa mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Nov 2020 00:23:59 -0000 Good evening, I've been digging around kawa source tree a few times, and frankly it feels abit overwhelming to get into happy-hacking of its internals. Not really because of code itself, but because of all peripheral code sitting in one place. Things that depend on servlets, jline, echo2, swt, domterm, etc, don't really have significance to the implementation of the core, but they do add mental and menial library imports overhead to get the whole thing running. Perhaps it could be worthwhile splitting things up? For example: * kawa-the-compiler base project, that'd consist basically of language-agnostic compiler what now are gnu.bytecode, gnu.expr, etc. Ideally one could just use it to create a jvm targeting language. * kawa-the-scheme project, which would be what implements the minimal core scheme, such as the native syntax forms seen in kawa.lang package. Depends on kawa-the-compiler project. Ideally one could just use it as a self-sufficient minimal scheme library. * various feature-projects, that depend on either just kawa-the-compiler, or kawa-the-scheme, but not on other feature-projects. * the main kawa project, which includes everything listed above, implements the public static main, and handles command line arguments. Basically, the module that compiles to what now is kawa.jar. What do you think? In terms of actual ways of implementing this, I'd like to see maven or gradle used, but git submodules or ant build scripts could be used just as well. If the base idea sounds ok, I could tinker around and show a prototype of how it could look. Regards, Arvydas